【问题标题】:Replace newlines in替换换行符
【发布时间】:2025-12-08 08:50:01
【问题描述】:

我在linux中有一些xml文件

a="xx
xx
xx"
b="y
y
y"

如何替换内容并变成

a="xx\n\xx\nxx"
b="y
y
y"

其中属性 b 不是替换

我已经尝试过了,但是如何支持多文件并仅使用 sed 或 awk 命令替换属性“a”; (不使用 xslt)

sed ':a;N;$!ba;s/\n/\\n/g' abc.xml

【问题讨论】:

    标签: linux sed awk


    【解决方案1】:

    呆呆

    gawk -vRS="\nb=" '/a=/{ gsub("\n","\\n") }
    { if (RT == "") printf "%s", $0
      else print
    }' ORS="\nb=" file
    

    输出

    $ ./shell.sh
    a="xx\nxx\nxx"
    b="y
    y
    y"
    

    【讨论】:

      【解决方案2】:

      这是一个应该可以工作的sed 命令:

      sed -n '/^a/ {:b; $b; N; /^a.*\"$/ {s/\n/\\n/gp;b};bb}; /^a/! p'
      

      【讨论】: