如何修改含正斜杠的sed替换命令以实现目标字符串替换?
解决sed替换命令中包含正斜杠的问题
哦,这个问题我碰到过好几次!sed默认用正斜杠/作为替换命令的分隔符,当你的替换内容里也包含/的时候(比如这里的W/m^2),sed就会把它当成分隔符的一部分,直接导致语法错误,命令跑不起来。有两个简单的办法可以解决这个问题:
方法一:更换分隔符
你可以随便选一个替换字符串里没有的字符作为分隔符,比如#、@、|都可以。举个例子,用#作为分隔符的话,命令修改后是:sed -i 's#1006.2#Irradiance (W/m^2) 1006.2#g' file1.1这种方法最省心,尤其是当替换内容里有多个特殊字符的时候,不用一个个转义,可读性也更强。
方法二:转义正斜杠
如果你不想换分隔符,可以把替换内容里的/用反斜杠\转义,变成\/。修改后的命令是:sed -i 's/1006.2/Irradiance (W\/m^2) 1006.2/g' file1.1这样sed就会把
\/识别成普通的正斜杠字符,而不是命令的分隔符。不过如果替换内容里有很多/的话,转义起来会比较繁琐,容易漏改。
个人更推荐第一种方法,操作简单还不容易出错~
内容的提问来源于stack exchange,提问作者kittensfurdays
相关产品推荐
相关产品推荐

