2015-04-17 43 views
0

如何理解下面的awk命令?如何理解這個nawk命令

nawk 'a-- >= 0; /datamart_extractrelations_static/ {a = 30}' app.log 

給出一個awk程序具有的格式:

pattern { action } 

什麼是 'A--> = 0' 呢?何時執行此操作?

回答

3

該命令是相同的:

nawk 'a-- >= 0 {print}; /datamart_extractrelations_static/ {a = 30}' app.log 

如果a-- >= 0awk將打印當前行是因爲print是如果沒有指定動作將被執行在awk的默認操作。

其結果是,該命令包含模式的行之後將打印30ths線datamart_extractrelations_static

爲了更好地理解這一點,你可以簡單地嘗試使用以下命令:

awk '1' input 

由於1會始終評估爲true,默認操作是printawk打印每一行輸入都不變。

+0

很好的答案。謝謝。 – AlexL

1

在輸入中找到datamart_extractrelations_static後,有人沒有完全理解打印30行的習語。請參閱Printing with sed or awk a line following a matching pattern,並專門查看習慣用語,在那裏「爲了正確的代碼打印N個記錄」。您發佈的代碼缺少a(其名稱爲計數變量a ???)的領先測試,以確保var對於巨大文件不會減少到零以下,並最終環繞並再次顯示爲正值。

+1

哇。這是現象!感謝分享。 – AlexL