Как заставить команду `tr` игнорировать новую строку?

Я хочу заменить несколько пробелов на одно пространство. Я использую tr для этого. Но он также заменяет новую строку пробелом. Как это можно избежать?

Код:

tr -s [:space:] ' '

Вход:

He  llo
Wor  ld
how  are  you

Требуемый вывод:

He llo
Wor ld
how are you

Мой вывод:

He llo Wor ld how are you
1
задан 30 August 2014 в 16:43

1 ответ

Вы можете использовать свой собственный метод: просто используйте одиночный tr -s [:space:] без ' ' в конце

или

Вы можете использовать одну из следующих команд:

С помощью просто используйте одиночный tr -s [:space:] без ' ' в конце :

tr -s ' '             < input.txt > output.txt
tr -s '[:blank:]'     < input.txt > output.txt
tr -s \               < input.txt > output.txt

С командой sed: [!d7 ]

sed 's/  */ /g'              < input.txt > output.txt
sed 's/ \{1,\}/ /g'          < input.txt > output.txt
sed 's/ \+ / /g'             < input.txt > output.txt
sed -e "s/[[:space:]]\+/ /g" < input.txt > output.txt

с командой sed :

awk '{$0=tolower($0);$1=$1}1' < input.txt > output.txt
awk '$1=$1'                   < input.txt > output.txt
awk '{$1=$1}1' OFS=" "        < input.txt > output.txt

Выход каждой из этих команд выглядит следующим образом:

He llo
Wor ld
how are you

Примечание: ваш файл сохраняется как имя «input.txt», а вывод записывается в новый файл с именем «output.txt».

1
ответ дан 24 May 2018 в 04:09
  • 1
    Перенаправление IO в любой день лучше, чем у кошки. Особенно в случае sed. sed использует имена файлов в аргументах и ​​читает их. smallo.ruhr.de/award.html – muru 30 August 2014 в 17:28
  • 2
    @muru правильный. Я отредактировал свой ответ. – αғsнιη 30 August 2014 в 17:36
  • 3
    @KasiyA, вы должны дать 1-е предпочтение tr, как это было допрошено. поэтому измените порядок. – Pandya 31 August 2014 в 11:18
  • 4
    @Pandya, я отредактировал. благодаря – αғsнιη 31 August 2014 в 11:20

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

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