sed相关

1 global flag

sed 's/xxx/xxx/' inputfile,如果没有带global flag g的话,匹配替换的只是inputfile中的每一行的第一个匹配项。如果带了g的话,才会全部都替换。

s命令替换的是行里面匹配了前面的模式的部分,也就是说,s是部分替换。

例子:MBA_students.txt
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

sed 's/a/A/' MBA_students.txt

输出:
102,JAson Smith,IT Manager
103,RAj Reddy,Sysadmin
104,AnAnd Ram,Developer
105,JAne Miller,Sales Manager

sed 's/a/A/' MBA_students.txt

输出:

102,JAson Smith,IT MAnAger
103,RAj Reddy,SysAdmin
104,AnAnd RAm,Developer
105,JAne Miller,SAles MAnAger

2 使用-i选项编辑之后替换原文件

sed -i -e SCRIPT inputfile,这里一定要用-e,否则会出现unterminated substitute pattern。

 

3 使用\(..\)进行子串匹配

3.1 用于\n获取

匹配到的子串可以用\1,\2,\3来获取。

3.2 使得里面的模式为一个整体

\(abcd\)*,匹配0个或者多个abcd。

也就是说,\(\)里面的是一个模式就可以了,然后多个的话,从前到后用\1、\2可以获取,其它的没有影响。

 

 

4 多个模式连接

多个模式连着写就是多个模式一起匹配,一起处理。如果不是一起匹配的话,用\|,表示要么前者匹配,要么后者匹配,然后分别处理。

例子 \(error processing \)\(package \|archive \),匹配“error processing package ”或者匹配“error processing archive ”。

 

5 正则表达式匹配的长度是有限的

正则表达式匹配输入行,匹配结果的长度是有限的,即子串的长度是有限的。它会用replacement来替换这个匹配上的子串。

 

posted @ 2017-01-22 16:03  PhoenixTree(梧桐树)  阅读(2716)  评论(0编辑  收藏  举报