I caratteri ASCII sono caratteri compresi nell'intervallo da 0 a 177 (ottale) .
Per eliminare caratteri al di fuori di questo intervallo in un file, utilizzare
LC_ALL=C tr -dc '\0-\177' <file >newfile
Il trcomando è un'utilità che funziona su singoli caratteri , sostituendoli con altri caratteri singoli (traslitterazione), eliminandoli o comprimendo le esecuzioni dello stesso carattere in un singolo carattere.
Il comando sopra dovrebbe leggere filee scrivere il contenuto modificato in newfile. L' -dopzione per trfare in modo che l'utilità elimini i caratteri (invece di trasletterli), e li -cfa considerare caratteri al di fuori dell'intervallo dato (invece che all'interno).
LC_ALL=Csi assicura che ogni valore di byte costituisca un carattere valido. Senza di essa, alcune trimplementazioni si interrompono se trovassero sequenze di byte che non formano caratteri validi nella codifica dei caratteri della locale.
Per sostituire il file originale con quello modificato, utilizzare
LC_ALL=C tr -dc '\0-\177' <file >newfile &&
mv newfile file
Ciò rinomina il nuovo file con il nome del vecchio file dopo che trè stato completato correttamente. Se trnon viene completato correttamente, sia perché non è stato possibile leggere il file originale o non è possibile scrivere nel nuovo file, il file originale verrà lasciato invariato.
In alternativa, per conservare il più possibile i metadati (permessi, ecc.) Del file originale, utilizzare
cp file tmpfile &&
LC_ALL=C tr -dc '\0-\177' <tmpfile >file &&
rm tmpfile