Редактирование текста с помощью команды tr

При использовании команды:

tr -s '\n' ' '< test1

где test1 - текстовый файл.

Если test1 написан таким образом, что он содержит символы новой строки (символы перевода строки), а не \ n (обратный слэш-n), то ответ приходит, как и ожидалось, что все символы новой строки заменяются одним пробелом.

Но если, скажем, test1 отформатирован так, что он содержит \ n (обратный слеш-n), а не перевод строки, то при выполнении команды \ n не заменяется одним пробелом, например, если test1 содержит

hello \n\n\n how are \n\n you

тогда вывод

hello \n\n\n how are \n\n you

и не

hello   how are   you

1 ответ

Так возникает вопрос, как заменить буквальную обратную косую черту?

Если это так, это нельзя сделать с помощью tr, поскольку tr работает только с одиночными символами. Вот как это сделать в Sed (редактор строк):

$ cat test1
hello \n\n\n how are \n\n you
$ sed -e 's/\\n/ /g' < test1
hello     how are    you

обратите внимание на дополнительную обратную косую черту, необходимую для того, чтобы сказать sed, что мы здесь ищем буквальную обратную косую черту, и не интерпретировать '\n' как символ перевода строки.

Другие вопросы по тегам