2011-03-14 62 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' 
相關問題