Saya memiliki file teks utf-8 besar yang sering saya cari grep. Baru-baru ini grepmulai melaporkan bahwa itu adalah file biner. Saya dapat terus mencarinya grep -a, tetapi saya bertanya-tanya perubahan apa yang membuatnya memutuskan bahwa file tersebut sekarang biner.
Saya memiliki salinan dari bulan lalu di mana file tidak lagi terdeteksi sebagai biner, tetapi tidak praktis bagi diffmereka karena mereka berbeda pada> 20.000 baris.
file mengidentifikasi file saya sebagai
Teks UTF-8 Unicode Bahasa Inggris, dengan garis yang sangat panjang
Bagaimana saya dapat menemukan karakter / garis / dll. di file saya yang memicu perubahan ini?
Pertanyaan serupa, non-duplikat 19907 mencakup kemungkinan NUL tetapi grep -Pc '[\x00-\x1F]'mengatakan bahwa saya tidak memiliki NUL atau perusak kontrol ANSI lainnya.
nuldan beberapa Esc. Saya mencoba menangkap mereka. Saya dapat menemukan escs ( \x1B), tetapi nultidak pernah muncul. Tes yang diberikan di atas menunjukkan 1, untuk baris yang berisi Escs, tetapi tidak ada untuk rentang apa pun yang tidak mengandung \x1B. Saya tidak akan percaya tes itu. Coba grep -zc .sebagai gantinya (harus lebih dari jumlah nuls dalam file Anda). (Juga, Anda mungkin lebih baik menggunakan [[:cntrl:]].)
sed -z 's/.*\(....\)$/\1/' foo | od -cuntuk melihat beberapa karakter sebelum NUL(jika ada), yang dapat membawa Anda ke masalah.
sedtidak memiliki -zpilihan: sed: invalid option -- 'z'.