【问题标题】:how to understand this nawk command如何理解这个 nawk 命令
【发布时间】:2015-04-17 15:23:06
【问题描述】:

如何理解下面的awk命令?

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

假设 awk 程序的格式为:

pattern { action }

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

【问题讨论】:

    标签: awk nawk


    【解决方案1】:

    命令同:

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

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

    因此,该命令将打印包含模式datamart_extractrelations_static 的行之后的第 30 行

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

    awk '1' input
    

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

    【讨论】:

      【解决方案2】:

      在输入中找到 datamart_extractrelations_static 后,有人不太明白打印 30 行的习语。请参阅Printing with sed or awk a line following a matching pattern 并专门查看习语 e 那里的“在某些模式后打印 N 条记录”以获取正确的代码。您发布的代码缺少对 a 的领先测试(谁命名了 count 变量 a???),以确保 var 不会因为一个大文件而一直递减到零以下,并且最终卷土重来,再次表现出积极的一面。

      【讨论】:

      • 哇。这是现象级的!感谢分享。
      猜你喜欢
      • 1970-01-01
      • 2018-02-22
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2012-02-12
      • 1970-01-01
      相关资源
      最近更新 更多