bash/sh: sed и символ перевода строки \n




2233
bash/sh: sed и символ перевода строки \n
Рейтинг 10 из 10. Голосов: 262
Ваша оценка:
Проблема: нам нужно через sed заменить символы перевода строки какими-то другими символами (например, пробелами). Но что делать - sed не воспринимает запись escape-последовательности вида \n и не хочет с нами дружить.

Да, в мануале к sed так и написано - оно не будет работать с \n в своих выражениях. Но есть обходной путь - использовать конструкцию tr:

echo -en "This\nis\nmultiline\nstring" | tr '\n' '_'
This_is_multiline_string

Как видим, tr успешно заменил символ перевода строки \n на знаки подчеркивания, с которыми уже сумеет справиться sed.


Возможна и обратная ситуация - когда какие-то символы нужно заменить на перевод строки. Вот пример:

echo "filename1 filename2 filename3" | tr ' ' '\n'
filename1
filename2
filename3

В данном примере tr заменит все пробелы на переводы строк.

Вопросы и ответы

Toronto
2020-06-08 23:49:36
Класс, спасибо.

Оставить комментарий

ответить