Заменить новые строки в

у меня есть несколько файлов xml в linux

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

Как заменить контент и становится

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

где атрибут b не заменяет

я пробовал это, но как поддерживать несколько файлов и заменять атрибут «a» только с помощью команды sed или awk; (не использовать xslt)

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

person brian    schedule 12.01.2010    source источник


Ответы (2)


пялиться

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"
person ghostdog74    schedule 12.01.2010

Вот команда sed, которая должна работать:

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