2.使用方法
sed [options]'AdressCommand' file ...
-n:静默模式,不再默认显示模式空间
Adress :
1.Startline,Endline
Forexample :1,100
$ :最后一行
2./RegExp/
/^root/
3./pattern1/,/pattern2/
第一次被模式一匹配的行开始,至第一次被pattern2匹配的行结束,这中间的所有行
4.LineNumber
指定某一行
5.StartLine,+N
从,startLine开始,向后N行
Command:
d:删除符合条件的行
p:显示符合条件的行
a \string:在指定的行,后面追加新行,内容为string
i \string :在指定行的前面添加新行,内容为string
r file :将指定文件内容的添加到符合条件处
w file :将指定范围内的内容另存至指定文件处
s/pattern/string/;查询替换
加修饰符:
g:全局替换
i:忽略大小写
s///;s###;s @@@
3.例子
定址:
p:print
sed -n '3p' /etc/grep.conf #打印第三行
sed -n '1,10p' /etc/passwd #打印第一到第十行
d:delete
sed '2,5d' /etc/passwd
#打印含有固定字符或字符串的行
sed '/my/p' datafile
sed -n '/my/p' datafile #取消sed默认打印,默认sed会自动将文件全部打印一遍
s命令:查询替换
sed 's/pattern/string/'
sed -n 's/xiaoming/DSB/g' /etc/passwd #因为没有加p所以没有输出
正确执行:sed -n 's/dushibing/dsb/gp' /etc/passwd
sed -n '1,20s/nologin$/login/gp' /etc/passwd
#分割符默认是/,但也可以使用#或其他字符作为分隔符
sed -n '1,20s#nologin#login#gp' /etc/passswd #输出结果与上面相同
-e 选项:用于多个编辑任务,在下一行开始编辑前,所有的编辑动作将应用到模式缓冲区中的行上
sed -e '1,10d' -e 's/xiaoming/hanmeimei/gp' /etc/passwd
r命令:读命令,sed使用该命令将以一个文件中的文本内容加到当前文件的特定位置上。
sed '/xiaoming/r file1' /etc/passwd
a 命令:追加命令,追加将添加新文本到文件中的当前行,接读入模式缓冲区中的行,如果追加的内容超过一行,
则在每一行都必须以反斜杠结束,最后一行除外。最后一行将以引号和文件名结束。
sed '/^#/a \
xiaominglove\
hanmeimei' /test/fstab
w命令:将指定范围内容保存到另一个文件内
sed -n '/^#/w /test/love' /etc/passswd
i命令:在当前行前面添加新的文本
sed '2i xiaoming' /test/love