sed相关

本文详细介绍了SED命令的基本用法,包括全局替换、使用-i选项编辑并替换原文件、子串匹配及多个模式的连接等。此外,还讲解了如何利用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来替换这个匹配上的子串。

 

转载于:https://www.cnblogs.com/hustdc/p/6340588.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值