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