Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー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/:.*//'

である。