在http://jira.codehaus.org/browse/GROOVY-1512,有一个补丁可用于执行类似于awk或Perl的BEGIN和END方法。这对于shell管道方案非常有用,例如汇总数字列表。
我使用当前版本的Groovy尝试了各种语法,但它没有执行。有人可以告诉我正确的语法是什么,并为它提供一个例子吗?
详细说明问题。如果我有以下内容,
my-desktop# du -s * | cut -f 1
4
1976
4
16
16
24
16
16
16
16
16
524
20
16
20
20
4
4
4
4
364
2356
4
5992
28
8
我想要以下内容(灵感来自awk)打印出它的总和:
du -s * | cut -f 1 | groovy -a -n -e 'def sum; BEGIN{sum =0; }END {println sum;}sum=sum+split[0].toInteger()'
如果尚未实现特殊的BEGIN和END闭包或函数,那么如何打印其他Unix命令中输入的所有数字列表的总和?
答案 0 :(得分:1)
运行Groovy 1.8.4,答案是
du -s * | groovy -a '\s+' -ne 'def begin() {sum = 0}; def end() {println sum}; sum += split[0] as Long'