为了账号安全,请及时绑定邮箱和手机立即绑定

用bash变量替换SED

用bash变量替换SED

慕哥9229398 2019-06-17 14:39:56
用bash变量替换SED试图使用bash脚本中的sed更改文本文件中的值,sed 's/draw($prev_number;n_)/draw($number;n_)/g' file.txt > tmp这将处于for循环中。不知道为什么不行。有什么建议吗?
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

内部变量'不要被取代。要获得字符串替换(或者内插法,如果您熟悉Perl),需要将其更改为使用双引号"而不是单引号:

$ # enclose entire expression in double quotes$ sed "s/draw($prev_number;n_)/draw($number;n_)/g" file.txt > tmp

$ # or, concatenate strings with only variables inside double quotes$ # this would restrict expansion to relevant portion$
 # and prevent accidental expansion for !, backticks, etc$ sed 's/draw('"$prev_number"';n_)/draw('"$number"';n_)/g' file.txt > tmp

$ # variable cannot contain arbitrary characters$ # see link in further reading section for details$ a='foo 
bar'$ echo 'baz' | sed 's/baz/'"$a"'/g'sed: -e expression #1, char 9: unterminated `s' command


二读:


查看完整回答
反对 回复 2019-06-17
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

单引号中的变量不会展开,在双引号中,在这种情况下使用双引号。

sed "s/draw($prev_number;n_)/draw($number;n_)/g" file.txt > tmp

你也可以让它eval但别那么做!


查看完整回答
反对 回复 2019-06-17
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

sed "s/draw($prev_number;n_)/draw($number;n_)/g"

这个有用吗?


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 837 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信