使用sed替换方括号内容为含特殊字符的变量a值失败,求解决方案
解决sed替换时变量含特殊字符导致的错误
问题出在变量a里包含了/,而sed的s命令默认用/作为替换操作的分隔符,这就导致sed把变量里的/当成了命令的一部分分隔符,进而解析出错。
最简单的解决办法是换一个seds命令的分隔符,选一个变量a里没有的字符(比如#),修改后的命令如下:
a=';;6n{|p~zaaaaaaUZkj/!iI)btreml=(' echo "abc0 zz 43242 [replace this text] name" | sed '/abc/ s#\[.*]#['"$a"]#'
执行这个命令后,就能正确把方括号内的内容替换成变量a的值了。原理是sed允许使用任意非空白字符作为s命令的分隔符,只要开头和结尾的分隔符保持一致即可,这样就避开了变量里的/对命令解析的干扰。
内容的提问来源于stack exchange,提问作者faressma
相关产品推荐
相关产品推荐

