No padrão sed, para pesquisar um ou mais caracteres SPC, a sintaxe é:
sed 's/ \{1,\}/ /g'
Ou
sed 's/ */ /g'
(que são dois espaços antes da estrela). Ou para torná-lo mais legível:
sed 's/[ ][ ]*/ /g'
Uma vez que -E(para expressões regulares estendidas) for adicionado ao padrão (o que deve acontecer na próxima versão principal do POSIX, muitas implementações já o suportam), você também pode fazer:
sed -E 's/ +/ /g'
Algumas sedimplementações também entendem \+com regex básico (sem -E) como um alias para \{1,\}.
Seu comando está errado:
sed: -e expression #1, char 10: unterminated 's' command
possivelmente porque não há saída padrão gerada.Tentar
sed -e 's/ \+/ /g' myfile.txt > myfile2.txt
Também: https://stackoverflow.com/questions/22939323/sed-command-to-replace-multiple-spaces-into-single-spaces
No padrão
sed
, para pesquisar um ou mais caracteres SPC, a sintaxe é:Ou
(que são dois espaços antes da estrela). Ou para torná-lo mais legível:
Uma vez que
-E
(para expressões regulares estendidas) for adicionado ao padrão (o que deve acontecer na próxima versão principal do POSIX, muitas implementações já o suportam), você também pode fazer:Algumas
sed
implementações também entendem\+
com regex básico (sem-E
) como um alias para\{1,\}
.Mas aqui, você pode simplesmente usar
tr
:Para apertar os espaços.