如何理解这个 nawk 命令

how to understand this nawk command

如何理解下面的awk命令?

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

给定 awk 程序的格式为:

pattern { action }

'a-- >= 0'是做什么的?这个操作什么时候执行?

命令相同:

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

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

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

的行之后打印第 30 行

为了更好地理解这一点,您可以简单地尝试以下命令:

awk '1' input

因为 1 将始终评估为 true 并且默认操作是 print awk 打印每一行输入不变。

有人不太理解在输入中找到 datamart_extractrelations_static 后打印 30 行的习语。请参阅 Printing with sed or awk a line following a matching pattern 并专门查看 idiom e there "Print the N records after some pattern" 以获得正确的代码。您发布的代码缺少对 a 的领先测试(谁命名了 count 变量 a???)以确保 var 不会持续递减对于一个巨大的文件低于零并最终环绕并再次显示为正数。