Начало и конец блока в Groovy, как в awk - PullRequest
0 голосов
/ 14 марта 2011

В http://jira.codehaus.org/browse/GROOVY-1512, доступен патч для выполнения методов BEGIN и END, аналогичных awk или Perl. Это может быть полезно для сценариев трубопровода оболочки, таких как суммирование списка чисел.

Я пробовал различные синтаксисы, используя текущую версию 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 Ответ

1 голос
/ 03 декабря 2011

Запуск Groovy 1.8.4, ответ дается как

du -s * | groovy -a '\s+' -ne 'def begin() {sum = 0}; def end() {println sum}; sum += split[0] as Long'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...