sed
stream editor,流编辑器
属于行编辑器,默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕。
模式空间:内存中按某种模式(如,逐行)读取文件并进行编的空间。
编辑器有全屏编辑器(vi)和行编辑器(sed)两种。
sed [OPTIONS] 'AddressCommand' file ...
选项 -n,静默模式,不再默认显示模式空间中的内容,而是显示符合条件的行。
选项 -i ,修改原文
选项 -e SCRIPT -e SCRIPT,可以同时执行多个脚本
选项 -f /PATH/TO/SED_SCRPT,用SED_SCRIPT里的命令逐行处理文件
选项 -r ,使用扩展正则表达式
Address
1、Start line ,End line
10,100,10-100行
$ 最后一行
$-1 倒数第二行
2、/RegExp/ ,正则表达式
/^root/,所有以root开头的行
若需用到元字符的本意,在其之前加\,进行转义。比如,需搜索含/的行,模式为/\//。
3、/pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,第一次被pattern2匹配到的行结束,其间所有行。
4、LineNumber,指定的行
5、Start Line,+n
Command
1、d,删除符合条件的行
2、p,显示符合条件的行
3、a \"STRING",在指定的行后面追加新行,追加内容为STRING;若需换行,使用换行符\n。
4、i \"STRING",在指定的行前面添加新行,追加内容为STRING;若需换行,使用换行符\n。
5、r FILE,将指定文件的内容添加至目标行处
6、w FILE ,将地址指定的范围内的内容另存至指定的文件中
7、s /pattern/STRING/,查找并替换
(pattern可以使用正则表达式的元字符,string不行;若需用到元字符的本意,在其之前加\,进行转义)不指定行,默认全文。
默认只替换每行中第一次被匹配到的字符串。
加修饰符(于最后):
g 全局替换。如:'s/@/@#@g',把全文里,每行所有的/换成#。
i 忽略字符大小写
s///=@###=s@@@
& ,String使用pattern引用内容
\(string\),后向引用,\1,