sed 流编辑器(非交互式编辑器) stream editor
(如果在使用sed的过程中发现’‘内的符号或者其他有冲突,可以尝试把’\’换成\”\”)
-
工作模式:逐行处理
-
语法:
sed [选项] ‘行的定位 动作’ 文件…
-
选项:
-n:静默输出,关闭模式空间的输出,不会输出未匹配到的行 一般与p命令结合使用
-e:允许进行多项编辑,也就是说对同一行做多次处理、. 可以做多点编辑
-e ‘动作1’ -e ‘动作2’ == ‘动作1;动作2’
-f: 后接sed脚本,指定执行的sed脚本(将模式动作写到文件中)
-r:允许使用扩展正则(r 和 i连用时,i要放到r后面)
-i:直接作用于原文件 没有输出 在使用-i之前一定先不加-i看看效果(如果确定写入文件之后,不要加-n,否则会把修改了的内容覆盖原来所有内容)
-i.bak:修改原文件之前进行备份
换成大写字母:sed \'s/[a-z]/\\u&/g\' /tmp/pass查看2,4,8行: sed -n \'2p,4p,8p\' /tmp/pass查看2到5行:sed -n \'2,5p\' /tmp/pass查看奇数行: sed -n \'1~2p\' /tmp/pass查看第三行到最后一行:sed -n \'3,$p\' /tmp/pass查看除了第三行到最后一行的所有行:sed -n \'3,$!p\' /tmp/pass查看除了第二行以外的所有行:sed -n \'2!p\' /tmp/pass查看文件中含有root的行:sed -n \'/root/p\' /tmp/pass从root开始输出行,直到sh结束输出:sed -nr \'/root/,/sh$/p\' /tmp/pass对ip a命令的内容进行处理,筛选出IP:ip a|sed -n \'/global/p\'|sed \'s/^.*inet//g\'|sed \'s/\\/20.*$//g\'将/etc/passwd的第二个root替换:sed \'s/root/ROOT/2\' /etc/passwd将/etc/passwd的每行第二个root开始替换:sed \'s/root/ROOT/g2\' /etc/passwd将/etc/redhat-release的文件内容读入到/tmp/pass的第一行后面:sed \'1r /etc/redhat-release\' /tmp/pass将/tmp/pass符合条件的行写入到/tmp/a.txt: sed \'/root/ w /tmp/a.txt\' /tmp/pass在/tmp/pass的第二行后面追加hello world: sed \'2 a hello world\' /tmp/pass在/tmp/pass的第二行前面插入helloworld: sed \'2 i hello world\' /tmp/pass一一对应替换:sed \'y/abc/ABC/\' /tmp/pass将/tmp/pass的第二行的内容改为hello world: sed \'2 c hello world\' /tmp/pass打印/tmp/pass第二行的下一行: sed -n \'2{n;p}\' /tmp/pass打印/tmp/pass前8行后不继续打印: sed \'8q\' /tmp/pass- sed的高级应用:将第一第二行换位:sed \'1h;1d;2G\' /etc/passwd将前三行进行倒叙:sed \'1h;1d;2G;2h;2d;3G\' zheng将内容倒叙:sed \'1{h;d};$!{G;h;d};G\' zheng