此问题已经在这里有了答案:
[试图弄清楚当我正在搜索的字符串的字符串中有双引号时,如何使用sed命令替换值。
我有一个名为ABC.conf的配置文件,它列出了发行版,如下所示; “ ReleaseSequence”:1555
我想使用sed将发行版号更改为2053
我已经尝试了以下sed命令;
sed -i 's:"ReleaseSequence":.*:"ReleaseSequence": 2053:' ABC.conf
我收到错误消息;
sed: -e expression #1, char 24: unknown option to `s'
我试图用[\“],'”“”'和“”来转义双引号,但sed不喜欢其中的任何一个。
这里双引号不是问题。尽管数据也包含文字冒号,但您已使用:
作为分隔符。使用其他分隔符
sed -i 's#"ReleaseSequence":.*#"ReleaseSequence": 2053#' ABC.conf
或反斜杠转义冒号。
[请您尝试使用GNU sed
。
sed -i.bak '/"ReleaseSequence":/s/\(.*"ReleaseSequence": \)\(.*\)/\12053/' Input_file
[i.bak
选项将备份现有Input_file并将更改也保存在实际Input_file中。