Ответ 1
Можете ли вы попробовать это
sed -i 's/\\n/\n/g' input_filename
У меня есть файл, содержащий несколько экземпляров \n.
Я хотел бы заменить их фактическими символами новой строки, но sed не распознает \n.
Я попробовал
sed -r -e 's/\n/\n/'
sed -r -e 's/\\n/\n/'
sed -r -e 's/[\n]/\n/'
и многие другие способы избежать этого.
может распознать литерал \n? если да, то как?
есть ли другая программа, которая может читать файл, интерпретирующий \n как настоящие символы новой строки?
Можете ли вы попробовать это
sed -i 's/\\n/\n/g' input_filename
$ echo "\n" | sed -e 's/[\\][n]/hello/'
awk
, похоже, справляется с этим штрафом:
echo "test \n more data" | awk '{sub(/\\n/,"**")}1'
test ** more data
Здесь вам нужно выйти из \
, используя \\
1) sed work 1 line a t time son no\n только по одной строке (он удаляется sed во время чтения в буфер). Вы должны использовать N, n или H, h, чтобы заполнить буфер более чем одной строкой, а вместо него -\n. Будьте полезны, ^ и $не больше конца строки, а конец строки/буфера, так что \n находятся внутри. 2)\n распознается в шаблоне поиска, а не в шаблоне замены. 2 способа его использования (образец)
sed s/\(\n\)bla/\1blabla\1/
sed s/\nbla/\
blabla\
/
сначала используйте \n уже внутри как обратную ссылку (меньшая строка в замене шаблона) второй используйте новую новую строку
так basicaly
sed "N
$ s/\(\n\)/\1/g
"
работает (но немного бесполезно). Я полагаю, что s/\(\n\)\n/\1/g
больше того, что вы хотите