よく検索する大きなutf-8テキストファイルを持っていgrepます。最近grep、それがバイナリファイルであると報告し始めました。で引き続き検索できgrep -aますが、どのような変更によってファイルがバイナリであると判断されたのでしょうか。
先月のコピーがあり、ファイルはバイナリとして検出されなくなりdiffましたが、20,000行を超えるため、実用的ではありません。
file 私のファイルを
行が非常に長いUTF-8 Unicode英語テキスト
文字/行/その他を見つけるにはどうすればよいですか。この変更を引き起こしている私のファイルで?
同様の、重複していない質問19907はNULの可能性をカバーgrep -Pc '[\x00-\x1F]'していますが、NULや他のANSI制御装置がないと述べています。
nulといくつかEscのが含まれていることがわかっているファイルがあります。私はそれらのためにgreppingを試みました。escs(\x1B)は見つかりましたが、nulは表示されませんでした。上記のテストは、Escs を含む行に対して1を示しましたが、を含まない範囲に対しては何も示しませんでした\x1B。私はそのテストを信用しません。grep -zc .代わりに試してください(nulファイル内のの数より1つ多いはずです)。(また、を使用し[[:cntrl:]]た方がよい場合もあります。)
sed -z 's/.*\(....\)$/\1/' foo | od -cことも試してください:(あるNUL場合)の前にいくつかの文字を表示すると、問題が発生する可能性があります。
sedは-zオプションがありません:sed: invalid option -- 'z'。