【问题标题】:sed replace with backslash, double quote, single quotesed 用反斜杠、双引号、单引号替换
【发布时间】:2022-01-27 06:57:32
【问题描述】:

您能否给出 sed 命令,该命令将在文件中找到 \" 并替换为 \\'

例如行:

LOG_FN=\"file_name\"

会变成

LOG_FN=\\'file_name\\'

通过使用这个template

sed -i 's/old-text/new-text/g' input.txt

我尝试了以下 sed 命令:

sed -i 's/\\\"/\\\\\'/g' input.txt

sed -i "s/\\\"/\\\\'/g" input.txt

不幸的是,它们失败了,因为我正在寻找的是 \" 的字符串替换,而我尝试更改单个 " 字符的命令。

【问题讨论】:

    标签: sed


    【解决方案1】:

    您不能在单引号内转义单引号。您的第二次尝试需要更多的反斜杠:请记住,在双引号内,shell 处理一层反斜杠,因此您必须将每个反斜杠加倍,这应该可以到达 sed

    sed "s/\\\\\"/\\\\\\\\'/g" input.txt
    

    shell处理完双引号字符串后,最终执行的脚本是

    s/\\"/\\\\'/g
    

    其中第一对反斜杠在匹配的正则表达式中产生一个文字反斜杠,替换中的每一对反斜杠在输出中产生一个文字反斜杠。

    演示:https://ideone.com/XqfwbV

    【讨论】:

      猜你喜欢
      • 2019-11-29
      • 1970-01-01
      • 2015-08-29
      • 2018-02-13
      • 1970-01-01
      • 2011-12-25
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多