Saya memiliki file teks utf-8 besar yang sering saya cari grep
. Baru-baru ini grep
mulai 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 diff
mereka 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.
nul
dan beberapa Esc
. Saya mencoba menangkap mereka. Saya dapat menemukan esc
s ( \x1B
), tetapi nul
tidak pernah muncul. Tes yang diberikan di atas menunjukkan 1, untuk baris yang berisi Esc
s, 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 nul
s dalam file Anda). (Juga, Anda mungkin lebih baik menggunakan [[:cntrl:]]
.)
sed -z 's/.*\(....\)$/\1/' foo | od -c
untuk melihat beberapa karakter sebelum NUL
(jika ada), yang dapat membawa Anda ke masalah.
sed
tidak memiliki -z
pilihan: sed: invalid option -- 'z'
.