sed(流编辑器)
sed基本用法:
sed:Stream EDitor
行编辑器(另一种:全屏编辑器:vi、vim)
sed:模式空间
sed默认部编辑源文件,仅对模式空间中的数据做处理;而后将模式空间打印到屏幕(默认朱行读取);
sed ‘AddressCommand‘ file ...
对这个或者这种(file)文件当中的,符合这个地址指定范围(Address)内的行 实现执行以下编辑命令(Command)。
Address:
1、StartLine,Endline
比如1,100
$:最后一行
$-1 倒数第二行
2、/RegExp/
/^root/
3 、/pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,至第一行被pattern2匹配到的行结束,这中间的所有行
4、LineNumber
指定的行
5、StartLine,+N
从StartLine开始,向后的N行;
Command:
d:删除符合条件的行;
p:显示符合条件的行;注意,直接使用p会显示两次,一次是符合条件的内容,一次是显示模式空间;需要加-n
以下d的例子把d改为p,sed后面加个
-n
,就只显示需要打印的内容
例如: sed -n ‘/^\//p‘ /etc/fatab
-i:直接修改原文件
-e: SCRIPT -e SCRIPT:可以同时执行多个脚本
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file 把某个路径下的脚本一个个运用到file里
-r:表示使用扩展正则表达式
a \string:在指定的航后面追加新行,内容为"string"(不包括斜杠)
sed ‘/^\//a \hhhhh‘ /etc/fatab
加两行:
sed ‘/^\//a \hhhhh\n\hhhhh‘ /etc/fatab(注意\n为换行号)
i \string:在指定的航前面追加新行,内容为"string"(不包括斜杠)
r FILE:将指定的文件的内容添加到符合条件的行处
sed ‘2r /etc/issue‘ /etc/fatab
sed ‘1,2r /etc/issue‘ /etc/fatab 一二行添加
w FILE:将指定范围内的内容内存至指定的文件中
sed ‘/oot/w /tmp/oot.txt‘ /etc/fatab
s///:查找并替换,默认只替换每一行中第一次被匹配到的字符串
s/pattern/string/(修饰符[可选]):
加修饰符:
g:全局替换
i:查找时忽略字符大小写
s///也可以s###或[email protected]@@只需要这三个符号一样,如果使用@@@或者###,则/不需要用转义字符表示,如:‘[email protected]/@#@g‘
1、sed ‘s/oot/OOT/‘ etc/fstab :每一行的oot更换成OOT
2、sed ‘1,2s/oot/OOT/‘ etc/fstab :第一二行的oot更换成OOT
3、sed ‘s/^\//#/‘ etc/fstab :每一行行首的/更换成#
4、sed ‘s/\//#/‘ etc/fstab :每一行的/更换成#
5、sed ‘[email protected]@&[email protected]‘ sed.txt
&引用模式匹配到的整个串
原本内容:
hello, like
hi, my love
后来:
hello,liker
hi,my lover
还可以 使用后向引用:
sed ‘[email protected]\(l..e\)@\[email protected]‘ sed.txt
例子1:删除符合条件的行:
把 /etc/fstab的1、2行删除
sed ‘1,2d‘ /etc/fstab
例子2:删除第3行到倒数第二行(暂时去掉-1):
sed ‘3,$-1d‘ /etc/fstab
例子3:只要行中包含oot就给予删除:(使用模式,过滤特定的行)
sed ‘/oot/d‘ /etc/fstab
例子4:
sed ‘3,$+1d‘ /etc/fstab
例子5:
sed ‘1,1+2d‘ /etc/fatab
sed ‘2d‘ /etc/fatab
例子6:删除以斜线开头的行
sed ‘/^\//d‘ /etc/fatab