【问题标题】:Using awk to count number of records [closed]使用 awk 计算记录数 [关闭]
【发布时间】:2011-07-04 03:06:36
【问题描述】:

我想通过 awk 计算表中的所有记录,但 NR 打印所有记录的记录号而不是总计数。我什至尝试过:

NF==4,count++{print count}

但它不能正常工作 如何通过 awk 做到这一点?

【问题讨论】:

    标签: awk


    【解决方案1】:

    请显示您的文件样本以及您下次要对它做什么(显示所需的输出)。只是猜测你想要什么,

    awk 'NF==4{count++} END {print count}' file
    

    记录总数以NR表示。

    awk 'END{print NR}' file1 file2
    

    当前的记录总数用 FNR 表示。

    awk 'END{print FNR}' file
    

    【讨论】:

    • +1 您的最后一个命令打印一组文件(或一个文件的唯一文件)中最后一个文件的记录数。我会使用NR,所以结果不会令人困惑。如果您想要每个文件的计数:awk 'FILENAME != prevfn {print prevfn, prevc} {prevfn = FILENAME; prevc = FNR} END {print prevfn, prevc}' file*
    【解决方案2】:

    我猜你的意思是总行数。通常,您应该为此使用wc -l <filename>。 如果您想使用 awk 执行此操作,请使用

    awk '{print NR}' | tail -1
    

    如果你只想使用 awk,那么做

    awk 'BEGIN{i=0}{i++;}END{print i}' <filename>
    

    【讨论】:

    • wc -l [file] 显示换行数,而不是行数。它将报告一个比实际行数小一点的数字。 @kurumi 是对的。
    • @Nikos:“换行数”和“行数”有什么区别?除非我弄错了,否则在 POSIX 中,“行”被定义为一串文本,后跟换行符,所以这些应该是相同的,除非您的文件格式错误并且缺少最后一个换行符。
    【解决方案3】:

    grep -c 给出匹配记录的计数

    【讨论】:

      猜你喜欢
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 2013-11-27
      • 2015-12-20
      相关资源
      最近更新 更多