cst*_*sta 52 bash sed substitution
尝试使用带有该行的bash脚本中的sed更改文本文件中的值,
sed 's/draw($prev_number;n_)/draw($number;n_)/g' file.txt > tmp
Run Code Online (Sandbox Code Playgroud)
这将是一个for循环.不知道为什么它不起作用.有什么建议?
k.p*_*ell 70
里面的变量'
不会被bash取代.要获取字符串替换(或插值,如果您熟悉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
Run Code Online (Sandbox Code Playgroud)
进一步阅读:
Pau*_*sey 13
单引号内的变量不会扩展,在双引号内,在这种情况下使用双引号.
sed "s/draw($prev_number;n_)/draw($number;n_)/g" file.txt > tmp
Run Code Online (Sandbox Code Playgroud)
你也可以使它eval
,但不要这样做!
归档时间: |
|
查看次数: |
55380 次 |
最近记录: |