редактирование текста с помощью команды 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
задан 21 December 2014 в 11:18

1 ответ

Так состоит в том вопрос, как каждый заменяет литеральной обратной-косой-чертой-n's?

Если так, это не может быть сделано с 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' как символ перевода строки.

2
ответ дан 10 November 2019 в 10:59

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

Похожие вопросы: