Que tipo de "espaço"?
Para "excluir todos os espaços em branco" pode significar uma das coisas diferentes:
- exclua todas as ocorrências do caractere de espaço, código
0x20
. - excluir todo o espaço horizontal, incluindo o caractere de tabulação horizontal, "
\t
" - excluir todo o espaço em branco, incluindo a nova linha "
\n
" e outros
A ferramenta certa para o trabalho
Se sed
não for um requisito por algum motivo oculto, use melhor a ferramenta certa para o trabalho.
O comando tr
tem o uso principal na tradução (daí o nome "tr") de uma lista de caracteres para uma lista de outros caracteres. Como um caso de canto, pode traduzir para a lista vazia de caracteres; A opção -d
( --delete
) excluirá os caracteres que aparecem na lista.
A lista de caracteres pode fazer uso de classes de caracteres na sintaxe [:...:]
.
-
tr -d ' ' < input.txt > no-spaces.txt
-
tr -d '[:blank:]' < input.txt > no-spaces.txt
-
tr -d '[:space:]' < input.txt > no-spaces.txt
Ao insistir em sed
Com sed, a sintaxe [:...:]
para classes de caracteres precisa ser combinada com a sintaxe para conjuntos de caracteres em regexps, [...]
, resultando em um pouco confuso [[:...:]]
:
-
sed 's/ //g' input.txt > no-spaces.txt
-
sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
-
sed 's/[[:space:]]//g' input.txt > no-spaces.txt