2014年11月12日水曜日

zgrepやzcat | grepでBinary file (standard input) matchesが出た場合の対処法

hoge_log.yyyymmdd.tar.gzみたいなログファイルを「zgrep 検索文字列 hoge_log.yyyymmdd.tar.gz」やら
「zcat hoge_log.yyyymmdd.tar.gz | grep 検索文字列」なんかで検索しようとしたら、結果が
「Binary file (standard input) matches」と出て困った。なんか解決法がないのか検索してみたら、
このページを見て解決。
http://nobuneko.com/blog/archives/2013/04/linux_grep_binary_files_text.html

つまりはgrepが対象をバイナリファイルとみなしているがためにこの現象が起きるみたい。

解決法としては、-aオプションを付ければよいようだ。これでテキストファイルとみなされ、
検索結果が表示されるようになる。つまりは、
zgrep -a 検索文字列 hoge_log.yyyymmdd.tar.gz

zcat hoge_log.yyyymmdd.tar.gz | grep -a 検索文字列
とやって検索すればOK。