如何理解这个 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
将打印当前行,因为 print
是 awk
中的默认操作,如果没有指定操作,将执行该操作。
因此,该命令将在包含模式 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 不会持续递减对于一个巨大的文件低于零并最终环绕并再次显示为正数。
如何理解下面的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
将打印当前行,因为 print
是 awk
中的默认操作,如果没有指定操作,将执行该操作。
因此,该命令将在包含模式 datamart_extractrelations_static
为了更好地理解这一点,您可以简单地尝试以下命令:
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 不会持续递减对于一个巨大的文件低于零并最终环绕并再次显示为正数。