Я хочу заменить несколько пробелов одиночным пробелом. Я использую 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
:space:
соответствия и горизонтальный и вертикальный пробел. Используйте :blank:
вместо этого для соответствия горизонтальному пробелу только.
Можно использовать собственный метод:
просто используйте единственный tr -s [:space:]
без ' '
в конце
или
Можно использовать одну из этих команд:
С командой TR:
tr -s ' ' < input.txt > output.txt
tr -s '[:blank:]' < input.txt > output.txt
tr -s \ < input.txt > output.txt
С командой sed:
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
с командой awk:
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
Вывод каждого эти команды как tha нормален следующим образом:
He llo
Wor ld
how are you