sed的应用
sed的应用
一、sed命令(流编辑器)
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。
sed [-n] 'AddressCommand' file ..
-n 不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以用来打印编辑行。
-f 如果正在调用sed脚本文件,使用此选项。此选项通知sed一个脚本文件支持所有的sed命令.
例如:sed -f myscript.sed input_file,这里myscript . sed即为支持sed命令的文件。
-c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条sed命令,此选项无用,但指定它也没有关系。
-i 编辑原文件(此选项慎用,如果使用则原文件就会被修改,无法恢复)。
-r 表示使用扩展正则表达式
sed由Adress和Command组成
二、Address(用于指定处理数)
1、指定行数量
如:sed -n "1,4p" /etc/passwd 1到4行显示
2、指定的某一行
如:
开头:sed -n "1" /etc/passwd
结尾:sed -n "$p" /etc/passwd
3、开始行,+N
显示从开始行,向后的N行
如:
sed -n "1,+2p" /etc/passwd 显示第1行的后2行
4、/模式(正则表达式)/:用来过滤特定的行
如:sed -n "/^root/p" /etc/passwd
5、/模式1/,/模式2/
第一次被模式1匹配到的行开始,到第一次被模式2匹配到的行结束,这中间的所有行。
如:sed -n "/\/bin\/bash$/p" /etc/passwd
三、Command
p:显示符合条件的行;
d:删除符合条件的行;
a \string :在符合条件的行后面添加;
\n:用于换行
i \string : 在指定的行前面添加新行,内容为string
r FILE : 将指定的文件的所有内容添加到符合条件行处
w FILE : 将指定范围内的内容另存为至指定的文件中
s/pattern/string/修饰符:查找并替换,默认只替换每行中第一次被模式匹配到的字符串。如果想替换全部加修饰符:
g:全局替换
i:忽略字符大小写
如;sed "s/\//#/g" /etc/fstab 把所有的/替换成#号
s///:可以不用/来作为分隔,可以是s***,s###
如:sed "s*\/*#*g" /etc/fstab
例子:如有一文件a内容为: hello like
haw a you ,love
自身引用(为串加上字符):
使用&:引用模式匹配的整个串
l..e : like --->liker
love --->lover
语句:sed "s#l..e#&r#g" a
后项引用(修改串):
l..e : like -->Like
love --> Love
语句:sed "s#l(..e)#L\1#g" a