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.