2011-03-14 7 views
0

http://jira.codehaus.org/browse/GROOVY-1512에서 awk 또는 Perl과 유사한 BEGIN 및 END 메소드를 실행할 수있는 패치가 제공됩니다. 이것은 숫자 목록을 합하는 것과 같은 쉘 파이핑 시나리오에 유용 할 수 있습니다.awk에서와 같이 groovy에서 BEGIN 및 END 블록

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 폐쇄 또는 기능은 아직 구현되지 않은 , 그러면 다른 유닉스 명령에서 파이프 된 모든 숫자 목록을 어떻게 인쇄 할 수 있습니까? 그루비 1.8.4을 실행

답변

1

는 대답은

du -s * | groovy -a '\s+' -ne 'def begin() {sum = 0}; def end() {println sum}; sum += split[0] as Long' 
로 제공됩니다
관련 문제