sed命令替换字符串

3 篇文章 0 订阅

sed命令替换字符串

使用sed命令可以直接替换文件中的字符串,在应用中比较普遍

替换字符串的一般格式为:

sed 's/aaa/bbb/g'

其中s表示替换filename文件中每行的第一个匹配到的字符串,如果要替换前三行匹配到的字符串,可以修改成sed '3s/aaa/bbb/g',以此类推;

sed -i可以直接修改文件中的内容sed -i 's/aaa/bbb/g' filename

aaa、bbb可以修改为变量,但需要用单引号扩起来sed -i 's/'$aaa'/'$bbb'/g' filename;

同时执行两种替换规则sed -i 's/aaa/bbb/g;s/ccc/ddd/g' filename,中间用分号隔开;

如果替换到的字符串中包含和sed中一样的分隔符,那么就必须修改当前的分隔符。例如替换字符串中如果包含斜杠/,那么命令要修改为sed -i 's#aaa#bbb#g' filename, #可以替换成其它的符号,以此类推,sed会把s后面的第一个字符作为分隔符;

sed替换变量命令在网上搜罗一下大概有四种:

1、eval sed 's/$a/$b/g' filename

这个命令在实际运用中没有使用过

2、sed "s/$a/$b/g" filename

这种方式把sed里面的单引号改为双引号,从而可以直接使用变量,这种方式使用比较普遍

3、sed 's/'$a'/'$b'/g' filename

把变量名称用单引号包裹起来,这种方式使用也较多

4、sed s/$a/$b/g filename

这个命令在实际运用中没有使用过

需要注意的是,双引号的拓展作用在使用变量时是无效的。例如在替换的字符串中如果包含斜杠"/",此时使用变量来替换就会出现问题,必须要修改sed的分隔符:

字符串aa="123abc/qqq"

sed -i "s/$aa/bb/g" filename

此时直接使用这个命令sed是会报错的,即便给字符串aa加上转义:aa="123abc\/qqq",把变量作为整体也无效:

sed -i "s/${aa}/bb/g" filename

只能修改sed中的分隔符为其它字符:

sed -i "s?$aa?bb?g" filename

这个时候就不会报错了,sed的分隔符成了?,不会与字符串中的/冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值