关于Ruby的一个很酷的事情是它能够像典型的Unix命令行工具一样运行,类似于(官方文档中的示例):
$ echo "matz" | ruby -pe '$_.upcase!'
MATZ
另一方面,awk可以对来自标准输入的行执行聚合,例如,对一系列数字求和:
$ for (( i=0; $i < 50; i++ )); do echo $i; done | awk 'BEGIN { tot=0; } { tot += $0 } END { print tot }'
1225
我想知道是否可以让Ruby执行上面的Awk BEGIN
和END
块所实现的功能,以便能够执行类似的聚合操作。
答案 0 :(得分:5)
seq 49 | ruby -pe 'BEGIN { $tot=0 }; $tot += $_.to_i; END { print $tot }'
答案 1 :(得分:2)
实际上,ruby也有BEGIN
/ END
块支持。例如请参阅此博文:http://burkelibbey.posterous.com/rubys-other-begin
更多文档:http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UA
HTH