2015-08-27 3 views
0

Я прошу решение awk, потому что решение sed sed ':a;N;$!ba;s/\n/ /g' НЕ получает последний символ новой строки, обычно присутствующий в файлах. Моя проблема заключается в том, что если у меня есть поток данных, каждый символ новой строки, ВКЛЮЧАЯ тот, который обычно присутствует в конце выходов, генерируемых такими программами, как echo, должен быть заменен на \n (raw). tr не работает, потому что он не может заменить строки (которые \\n есть), только отдельные символы.Как заменить новые строки своей escape-последовательностью с помощью awk?

В качестве примера, на трубопроводе:

echo -e "This is\na test." 

к AWK, я должен получить:

This is\na test.\n 

взамен.

+0

'sed ': a; N; $! Ba; s/\ n/\\ n/g; $ s/$/\\ n /'' –

+0

sed - это простые подстановки на отдельных линиях, то есть все , Каждый раз, когда вы пытаетесь использовать команды sed, отличные от s, g и/или p (с -n), вы используете конструкции, которые стали устаревшими в середине 1970-х годов, когда был изобретен awk. –

ответ

2
$ echo -e "This is\na test." | awk -v ORS='\\n' '1' 
This is\na test.\n$ 

$ в конце вывода моя подсказка.

Смежные вопросы