
大量の.gzファイルから非ASCII文字をgrepしたいと思います。ただし、CentOS 7.6(GNU grep v2.20)では、次の内容は機能しません。
$ zcat yyyy/yyyymmdd/filname.yyyymmdd.gz | grep --color='auto' -P -n "[\x80-\xFF]"
$ zgrep --color='auto' -P -n "[\x80-\xFF]" yyyy/yyyymmdd/filname.yyyymmdd.gz
このPerl検索は機能します。
$ zcat yyyy/yyyymmdd/filname.yyyymmdd.gz | perl -ne 'print "$. $_" if m/[\x80-\xFF]/'
しかし、以下のように複数のファイルに対してどのようにこれを行うことができますか?
$ zgrep "[\x80-\xFF]" 2020/2020*/filename.2020*.gz
答え1
LC_ALL = Cに設定すると、grep -Pとzgrepが機能します。
$ export LC_ALL=C
$ zgrep --color='auto' -P -n "[\x80-\xFF]" yyyy/yyyymmdd/filname.yyyymmdd.gz