使用 Ruby 命令行实现类似于 awk 的 BEGIN 和 END
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
块所实现的操作,以便至于能够进行类似的聚合操作。
One of the cool things about Ruby is its ability to behave like typical Unix command-line tools, to do things like (similar to the example from the official documentation):
$ echo "matz" | ruby -pe '$_.upcase!'
MATZ
Awk, on the other hand can perform an aggregation on lines from standard input, e.g., summing a sequence of numbers:
$ for (( i=0; $i < 50; i++ )); do echo $i; done | awk 'BEGIN { tot=0; } { tot += $0 } END { print tot }'
1225
I'd like to know if it's possible to get Ruby to do what is being achieved by the Awk BEGIN
and END
blocks above so as to be able to do similar aggregation operations.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上 ruby 也有
BEGIN
/END
块支持。例如,请参阅此博客文章:http://burkelibbey.posterous.com/rubys-other-begin更多文档:http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UA
HTH
Actually ruby has
BEGIN
/END
block support as well. e.g. see this blog post: http://burkelibbey.posterous.com/rubys-other-beginSome more documentation: http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UA
HTH