2011-03-14 63 views
0

http://jira.codehaus.org/browse/GROOVY-1512,修补程序可用于执行类似于awk或Perl的BEGIN和END方法。这对于壳体管道场景(如汇总数字列表)可能非常有用。像在awk中一样在开始和结束块

我尝试了使用当前版本的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命令输出的所有数字列表中打印出一个总和?

回答

1

运行Groovy的1.8.4,给出的答案是为

du -s * | groovy -a '\s+' -ne 'def begin() {sum = 0}; def end() {println sum}; sum += split[0] as Long' 
相关问题