使用Ruby命令行的类似AWK的BEGIN和END

Eri*_*ith 2 ruby unix awk command-line

Ruby的一项很酷的功能是它具有像典型的Unix命令行工具一样的行为(类似于官方文档中的示例):

$ echo "matz" | ruby -pe '$_.upcase!'
MATZ
Run Code Online (Sandbox Code Playgroud)

另一方面,Awk可以对来自标准输入的行进行汇总,例如,对一系列数字求和:

$ for (( i=0; $i < 50; i++ )); do echo $i; done | awk 'BEGIN { tot=0; } { tot += $0 } END { print tot }'
1225
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能让Ruby执行上述Awk BEGIN和代码END块所实现的功能,以便能够执行类似的聚合操作。

Rea*_*onk 5

seq 49 | ruby -pe 'BEGIN { $tot=0 }; $tot += $_.to_i; END { print $tot }'
Run Code Online (Sandbox Code Playgroud)