Замена символа \ n фактическим переводом строки в тексте - PullRequest
0 голосов
/ 03 марта 2020

Итак, у меня есть текстовый файл, который выглядит так:

this text \n and more text.

Я пытаюсь заменить символы \ n реальным переводом строки, и для этого я пытаюсь что-то вроде этого:

sed 's/\n/\n/g' inputfile

Есть идеи, как использовать sed для этого? Спасибо.

Ответы [ 3 ]

1 голос
/ 03 марта 2020

Использование awk:

awk '{gsub(/\\n/, "\n")} 1' file

Обратите внимание, что решение awk также работает с POSIX awk и gnu-awk.

Вот решение POSIX sed:

sed 's/\\n/\
/g' file
1 голос
/ 03 марта 2020

Вы должны убежать от задней косы sh в шаблоне поиска

sed 's/\\n/\n/g' inputfile
0 голосов
/ 03 марта 2020

Ответ Бодо работает на Linux (с GNU sed). Но в системах с BSD sed, например, MacOS, \n в строке замены не заменяется новой строкой, поэтому вам нужно вставить буквальную новую строку в замену. И его нужно экранировать, иначе вы получите ошибку «неэкранированный символ новой строки внутри шаблона замены».

sed $'s/\\\\n/\\\n/g'

$'...' говорит bash заменить C стиль escape-последовательности в строке. Поэтому вам нужно удвоить все обратные слеши, чтобы они буквально попали в строку.

...