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 用于 获取

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

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

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

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

4 多个模式连接

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

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

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

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

原文地址:https://www.cnblogs.com/hustdc/p/6340588.html