Bash:sed中的特殊字符

时间:2018-01-04 19:13:30

标签: bash sed

我想在一些bash脚本中用sed替换像:

s:44:\"STRING\"

要:

s:NEWSTRING:\"NEWSTRING2\"

我尝试了很多方法来逃避特殊字符,但我总是错误

sed: -e expression #1, char 32: unterminated s'命令`

或者像那样。

请告诉我正确的sed -i(sed -i“s / xxx / xxx / g”文件)命令?

2 个答案:

答案 0 :(得分:1)

你必须正确地逃避反斜杠:

sed 's/s:44:\\"STRING\\"/s:NEWSTRING:\\"NEWSTRING2\\"/'

示例:

$ echo 's:44:\"STRING\"' | sed 's/s:44:\\"STRING\\"/s:NEWSTRING:\\"NEWSTRING2\\"/g'
s:NEWSTRING:\"NEWSTRING2\"

答案 1 :(得分:0)

您错过了最终分隔符。在你的情况下,它似乎是:因此,你需要在你的替换内容之后添加一个final:如果您使用像g

这样的修改指令并不重要