shell sed语法详解

本文详细介绍了如何使用sed命令进行文本处理,包括字符串替换、添加文本、指定行替换等功能,并提供了多个实际应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sed  替换文件中的字符串

sed -e 's/foo/bar/' myfile   将 myfile 文件中每行第一次出现的foo用字符串bar替换,然后将该文件内容输出到标准输出

sed -e 's/foo/bar/g' myfile  g 使得 sed 对文件中所有符合的字符串都被替换

sed -i 's/foo/bar/g' myfile  选项i的用途是直接在文件中进行替换

为防止误操作带来灾难性的后果,sed在替换前可以自动对文件进行备份,前提是需要提供一个后缀名。mac osx下是强制要求备份的,centos下是可选的 
sed -i '.bak' 's/foo/bar/g' ./m* 
如果不需要备份文件,使用空字符串来取消备份,mac osx下可以使用如下命令完成替换操作: 
sed -i '' 's/foo/bar/g' ./m*

sed 's/^/添加的头部&/g' //在所有行首添加
sed 's/$/&添加的尾部/g' //在所有行末添加
sed '2s/原字符串/替换字符串/g' //替换第2行
sed '$s/原字符串/替换字符串/g' //替换最后一行
sed '2,5s/原字符串/替换字符串/g' //替换2到5行
sed '2,$s/原字符串/替换字符串/g' //替换2到最后一行

替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:

代码如下:

sed 's/^/添加的头部&/g;s/$/&添加的尾部/g' //同时执行两个替换规则

 

当替换的内容有变量时,需要使用“”

如:sed "s/$a/$b/" filename

常见字符串替换:

1.替换sdk.dir=H:\\sdk.text  需要将H:\\sdk.text替换为/Users/jenkins/jenkins/tool/android-sdk-macosx

sed -i "" 's@\(sdk.dir=\).*@\1\/Users/jenkins/jenkins/tool/android-sdk-macosx@' ${WORKSPACE}${fileload}  

---s后面的分隔符可以为/ @ #等。.*代表sdk.dir=后的内容  \1\代表sdk.dir=

2.替换thinkive.keystore为/Users/jenkins/Documents/Android_keystore/thinkive.keystore

sed -i "" 's@thinkive.keystore@/Users/jenkins/Documents/Android_keystore/thinkive.keystore@' ${WORKSPACE}/app/build.gradle

直接替换即可。

3.替换<string>23</string> 为<string>24</string>

sh '''sed -i "" "s@<string>23</string>@<string>${Codeversion}</string>@" ${WORKSPACE}${fileload}

直接替换即可。

4.替换特殊字符串中的字符串。如替换thinkiveQWERT1003中的1003为1004

sed -i "" '/thinkiveQWERT1003/s/1003/1004/' ${WORKSPACE}/app/build.gradle

原字符串写在s前面。

转载于:https://www.cnblogs.com/wwyxyt/p/8260491.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值