O comando sed
remove qualquer caractere que não seja imprimível, e não guias, do conteúdo de cada linha de entrada. O número de linhas não mudaria (os caracteres de nova linha não são removidos, pois não fazem parte do conteúdo da linha), mas o número de caracteres ou bytes. Teste novamente com wc -c
para o número de bytes, wc -m
para o número de caracteres.
A expressão regular [^...]
corresponde a qualquer caractere único ( elemento de comparação real ) não dentro do [...]
. Nesse caso, é a classe de caractere [:print:]
e o caractere de tabulação. O $
no início da cadeia faz com que bash
replace \t
tenha um caractere de tabulação literal antes de chamar sed
.
A classe de caractere [:print:]
corresponde a caracteres imprimíveis na localidade atual, ou seja, caracteres alfanuméricos, caracteres de pontuação e espaço (mas não a guia que é um caractere de controle).
Em outras palavras, exclui tudo o que não é um caractere alfanumérico, caractere de pontuação, espaço ou tabulação.
Para gravar o resultado de volta no arquivo (uma "edição no local"), algumas implementações sed
têm uma opção -i
para isso; use sed -i
ou sed -i ''
dependendo da implementação. Certifique-se de que a saída correta seja produzida primeiro, ou você pode destruir seus dados.