Znaki ASCII to znaki z zakresu od 0 do 177 (ósemkowe) włącznie .
Aby usunąć znaki spoza tego zakresu w pliku, użyj
LC_ALL=C tr -dc '\0-\177' <file >newfile
trPolecenie to narzędzie, które działa na pojedynczych znaków , albo zastępując je innymi pojedynczych znaków (transliteracji), usuwając je lub ściskania serie tego samego znaku w jednej postaci.
Powyższe polecenie odczytuje filei zapisuje zmodyfikowaną treść newfile. -dOpcja trsprawia użytkowych znaków Delete (zamiast nich transliteracji) i -csprawia, że pod uwagę znaki poza danym przedziale (zamiast wewnętrznej).
LC_ALL=Cupewnia się, że każda wartość bajtu stanowi poprawny znak. Bez tego niektóre trimplementacje przerwałyby się, gdyby znalazły sekwencje bajtów, które nie tworzą prawidłowych znaków w kodowaniu znaków ustawień regionalnych.
Aby zastąpić oryginalny plik zmodyfikowanym, użyj
LC_ALL=C tr -dc '\0-\177' <file >newfile &&
mv newfile file
Spowoduje to zmianę nazwy nowego pliku na nazwę starego pliku po trpomyślnym zakończeniu. Jeśli trnie zakończy się pomyślnie, ponieważ nie można odczytać oryginalnego pliku lub nie zapisać do nowego pliku, oryginalny plik pozostanie niezmieniony.
Alternatywnie, aby zachować jak najwięcej metadanych (uprawnień itp.) Oryginalnego pliku, użyj
cp file tmpfile &&
LC_ALL=C tr -dc '\0-\177' <tmpfile >file &&
rm tmpfile