gr8でのmapは1行分をselfとみなし、順繰りにぶん回すメソッドです。
gr8は内部的にRubyを使っているので……ブロックを渡す事も、&:でlambdaを渡す事ができます。
$ cat data | grep -v "^$" | gr8 -C 1 'map(&:downcase)' haruhi mikuru yuki
実装はオリジナルのEnumrable#mapをベースとしつつ、instance_execを使用しています。
alias __map map def map(&block) __map {|x| x.instance_exec(x, &block) } end
オリジナルと同じ挙動にしたい場合、collectを使ってください。
ためしにselfを使うと、Enumerator::Lazyを返してきます。
$ cat data | grep -v "^$" | gr8 -C 1 'collect{self}' #<Enumerator::Lazy:0x007fd0498c19c0> #<Enumerator::Lazy:0x007fd0498c19c0> #<Enumerator::Lazy:0x007fd0498c19c0>