Caracteres ASCII são caracteres no intervalo de 0 a 177 (octal), inclusive .
Para excluir caracteres fora deste intervalo em um arquivo, use
LC_ALL=C tr -dc '\0-\177' <file >newfile
O trcomando é um utilitário que funciona com caracteres únicos , substituindo-os por outros caracteres únicos (transliteração), excluindo-os ou compactando execuções do mesmo caractere em um único caractere.
O comando acima deve ler filee escrever o conteúdo modificado para newfile. A -dopção de trfazer o utilitário excluir caracteres (em vez de transliterá-los) e -cconsiderar caracteres fora do intervalo especificado (em vez de dentro).
LC_ALL=Cgarante que cada valor de byte crie um caractere válido. Sem ele, algumas trimplementações seriam abortadas se encontrassem sequências de bytes que não formam caracteres válidos na codificação de caracteres do código do idioma.
Para substituir o arquivo original pelo modificado, use
LC_ALL=C tr -dc '\0-\177' <file >newfile &&
mv newfile file
Isso renomeia o novo arquivo para o nome do arquivo antigo após a trconclusão com êxito. Se trnão for concluído com êxito, porque ele não pôde ler o arquivo original ou não gravou no novo arquivo, o arquivo original permanecerá inalterado.
Como alternativa, para preservar o máximo possível dos metadados (permissões etc.) do arquivo original, use
cp file tmpfile &&
LC_ALL=C tr -dc '\0-\177' <tmpfile >file &&
rm tmpfile