替换换行符

时间:2010-01-12 09:03:39

标签: linux sed awk

我在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

2 个答案:

答案 0 :(得分:0)

gawk的

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"

答案 1 :(得分:0)

这是一个应该有效的sed命令:

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