如何理解下面的awk命令?
nawk 'a-- >= 0; /datamart_extractrelations_static/ {a = 30}' app.log给定一个awk程序的格式为:
pattern { action }“a-- >= 0”是做什么的?这个操作什么时候执行?
发布于 2015-04-17 15:31:25
该命令与以下命令相同:
nawk 'a-- >= 0 {print}; /datamart_extractrelations_static/ {a = 30}' app.log如果是a-- >= 0,awk将打印当前行,因为print是awk中的默认操作,如果没有指定操作,将执行该操作。
因此,该命令将在包含模式datamart_extractrelations_static的一行后面打印第30行。
要更好地理解这一点,只需尝试以下命令:
awk '1' input因为1总是计算为true,默认操作是print,所以awk打印输入的每一行都没有改变。
发布于 2015-04-17 15:57:33
在输入中找到datamart_extractrelations_static后,有人没有完全理解打印30行的成语。请参阅Printing with sed or awk a line following a matching pattern,并特别查看成语e,那里有“打印N个记录后的某些模式”的正确代码。您发布的代码缺少了a上的领先测试(谁命名了count变量a??)以确保变量不会对一个大型文件持续递减到零以下,并最终环绕起来,并再次显示为正。
https://stackoverflow.com/questions/29703318
复制相似问题