Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その7:grep

gr8のgrepメソッドはlazyでgrepコマンドとawkを合わせた挙動を同時に実行できます。

$ ls | gr8 'grep(/(.+)(\.png)$/) {|s| printf "cp %16s %16s", "#{$1}.png", "img/#{$1.upcase}.jpg"}' 
cp          ceo.png      img/CEO.jpg
cp   system_sol.png img/SYSTEM_SOL.jpg
$ ls | gr8 'grep(/(.+)(\.png)$/) {|s| printf "cp %16s %16s", "#{$1}.png", "img/#{$1.upcase}.jpg"}' | sh

$ ls img/
CEO.jpg  SYSTEM_SOL.jpg

残念ながら、以下のようにLazyになってるので……後付けのwith_indexやwith_objectはうまく動かないようです

$ ls | gr8 'grep(/(.+)(\.png)$/).class' 
Enumerator::Lazy

参考もと