Замена многострочного текста в файле с кавычками
Необходимо в файле найти по шаблону (регулярка) текст и заменить его на
другой многострочный текст в котором присутствуют разные кавычки: ', ". Попробовал заменить через Perl, он ругается что там встречаются кавычки...
Исходный текст:
foo bar
text
baz quux
Текст, который хочется получить:
foo bar
line1
"line2"
'line3'
baz quux
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Вы не привели примеров текста или вашего кода, так что я угадываю. Вот вариант с GNU sed:
$ sed -e 's/text/line 1\n"line2"\n'"'line3'"'/' -i -- ./txt.tmp.txt
Более переносимый (но и более уродливый) вариант с POSIX ed и POSIX printf:
printf '%%s/text/line1\\\n"line2"\\\n'"'line3'"'/\nwq\n' | ed -s -- ./txt.tmp.txt
Вариант с POSIX ed и POSIX more на несколько строк:
more <<-'EOF' | ed -s -- ./txt.tmp.txt
%s/text/line1\
"line2"\
'line3'/
wq
EOF
Все варианты заменяют text на:
line1 "line2" 'line3'