Редактирование текста с помощью команды 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' как символ перевода строки.