Karakter ASCII adalah karakter dalam rentang dari 0 hingga 177 (oktal) secara inklusif .
Untuk menghapus karakter di luar rentang ini dalam file, gunakan
LC_ALL=C tr -dc '\0-\177' <file >newfile
The tr
perintah adalah utilitas yang bekerja pada karakter tunggal , baik mengganti mereka dengan karakter tunggal lainnya (transliterasi), menghapus mereka, atau mengompresi berjalan dari karakter yang sama ke dalam satu karakter.
Perintah di atas akan membaca dari file
dan menulis konten yang dimodifikasi newfile
. The -d
pilihan untuk tr
merek utilitas karakter delete (bukan transliterasi mereka), dan -c
membuatnya mempertimbangkan karakter luar interval tertentu (bukan dalam).
LC_ALL=C
memastikan bahwa setiap nilai byte membentuk karakter yang valid. Tanpa itu, beberapa tr
implementasi akan dibatalkan jika mereka menemukan urutan byte yang tidak membentuk karakter yang valid dalam pengkodean karakter lokal.
Untuk mengganti file asli dengan yang dimodifikasi, gunakan
LC_ALL=C tr -dc '\0-\177' <file >newfile &&
mv newfile file
Ini mengganti nama file baru dengan nama file lama setelah tr
selesai dengan sukses. Jika tr
tidak berhasil diselesaikan, baik karena tidak bisa membaca file asli atau tidak menulis ke file baru, file asli akan dibiarkan tidak berubah.
Atau, untuk mempertahankan sebanyak mungkin meta data (izin dll.) Dari file asli, gunakan
cp file tmpfile &&
LC_ALL=C tr -dc '\0-\177' <tmpfile >file &&
rm tmpfile