sed
sed基本用法
sed( stream Editor)是一种流编辑器,默认不编辑原文件,仅对模式空间中的数据做处理,而后,处理结束后,将模式空间打印至屏幕;
sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
行编辑器:逐行处理(全屏编辑器如vi)
语法: sed [option] ‘AddressCommand’ file…
Option:
-n:静默模式 ,不再默认显示模式空间中的内容,只显示符合条件的行
-i:直接修改原文件,慎用
-e SCRIPT -e SCRIPT:可以同时执行多个脚本;
-f /PATH/TO/SED_SCRIPT:指定文件,也可以执行多个脚本;
sed -f /path/to/scripts file
表示使用扩展正则表达式
Address:
1、StartLine, EndLine
如1,100
$:表示最后一行
2、 使用正则表达式来指定模式 /RefExp/
如:/^root/
3、 /pattern1/, /pattern2/
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行;
4、LineNumber
指定的行
$:表示最后一行
5、StartLine, +N
从StartLine行开始,向后的N行
Command:
d:删除符合条件的行:
p:显示符合条件的行;
a \string: 在指定的行后面追加新行,内容为string
\n:可以拥有换行
i \string: 在指定的行前面添加新行,内容为string
r FILE:将指定文件内容添加至符合条件的行处
w FILE:将地址指定范围内的内容另存至指定的文件中;
s/pattern/string/修饰符: pattern中可以用正则表达式,而string不行,查找并替换,默认只替换每行中第一次匹配到的字符串;
加修饰符
g:全局替换
i:忽略字符大小写
也可以用其他分隔符代替/,只要保持三个统一就行,如s###,s@@@
后项引用仍然适用:\(\), \1,\2
&: 引用模式匹配到的整个串
l...e: like-->liker
love-->lover (sed '/l..e/&r/g' file.txt)
like-->Like
love-->Love (sed '#l/(..e/)#L\1#g' file1)
不能完全匹配字符串时不能用&便只能用后项引用。