:space:
corresponde ao espaço em branco horizontal e vertical. Use :blank:
para corresponder apenas ao espaço em branco horizontal.
Eu quero substituir vários espaços por um único espaço. Estou usando tr
para fazer isso. Mas também está substituindo uma nova linha por um espaço. Como posso evitar isso?
Código:
tr -s [:space:] ' '
Entrada:
He llo
Wor ld
how are you
Saída exigida:
He llo
Wor ld
how are you
Minha saída:
He llo Wor ld how are you
:space:
corresponde ao espaço em branco horizontal e vertical. Use :blank:
para corresponder apenas ao espaço em branco horizontal.
Você pode usar seu próprio método:
use apenas tr -s [:space:]
sem ' '
no final
ou
Você pode usar um destes comandos:
Com o comando tr :
tr -s ' ' < input.txt > output.txt
tr -s '[:blank:]' < input.txt > output.txt
tr -s \ < input.txt > output.txt
Com o comando 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
com o comando 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
A saída de cada um destes comandos é tão sensata como segue:
He llo
Wor ld
how are you
Nota: seu arquivo é salvo como nome "input.txt" e a saída é gravada em um novo arquivo chamado "output.txt".