簡體   English   中英

BEGIN 和 END 塊像 awk 一樣在 groovy 中

[英]BEGIN and END block in groovy like in awk

https://issues.apache.org/jira/browse/GROOVY-1512 上,有一個補丁可用於執行類似於 awk 或 Perl 的 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 閉包或函數尚未實現,那么如何打印從其他 Unix 命令輸入的所有數字列表的總和?

運行 Groovy 1.8.4,答案如下

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM