如何理解这个nawk命令

时间:2015-04-17 15:23:06

标签: awk nawk

如何理解以下awk命令?

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

鉴于awk程序的格式为:

pattern { action }

什么是' a - > = 0'做?该操作何时执行?

2 个答案:

答案 0 :(得分:3)

该命令与:

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

如果a-- >= 0 awk将打印当前行,因为printawk中的默认操作,如果未指定操作,则会执行该操作。

因此,该命令将在包含模式datamart_extractrelations_static

的行之后打印30ths行

为了更好地理解这一点,您只需尝试以下命令:

awk '1' input

由于1始终评估为true,默认操作为print awk,所以输入的每一行都会保持不变。

答案 1 :(得分:1)

在输入中找到datamart_extractrelations_static之后,有人没有正确的印刷30行的习惯用法。请参阅Printing with sed or awk a line following a matching pattern并特别注意那里的成语"在某些模式后打印N条记录"为了正确的代码。您发布的代码缺少a(名为计数变量a ???)的主要测试,以确保var不会在下面继续递减为一个巨大的文件归零并最终回绕并再次呈现正面。