2015-04-17 44 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