シェルワンライナー160本ノック問題77
問題77 異なる文字コードのファイルの一括検索
問題のファイルは
https://github.com/shellgei/shellgei160
からダウンロードできる。
異なる文字コードのファイルから特定の文字列を探してくる問題だった。自分で珍しくワンライナーを思いついたと思ったら正しく動作してくれず、何が悪いのかもわからなかった。
まず自分の正しく動かないワンライナーを載せておく。
grep '山田' $(nkf <<< meme_sjis) $(nkf <<< meme_euc) $(nkf <<< meme_utf8)
これだとmeme_eucの山田を検出してくれない。grep は多数のファイルを一度に扱えたかどうかわからないがエラーを吐いていないので大丈夫だと思うのだが、なにがまずいのだろう。
一方解答例は
$ ls meme_* | xargs -I@ sh -c "grep -aH . @ | nkf" | grep 山田 | sed 's/:.*//'
である。