【问题标题】:Number of fields returned by awkawk 返回的字段数
【发布时间】:2011-07-31 17:51:13
【问题描述】:

有没有办法让 awk 返回满足字段分隔符条件的字段数?比如说,我的文件包含

a b c d

所以,awk --field-separator=" " | <something> 应该返回 4

【问题讨论】:

    标签: awk


    【解决方案1】:

    NF 变量设置为输入记录中的字段总数。所以:

    echo "a b c d" | awk --field-separator=" " "{ print NF }"

    会显示

    4

    但请注意:

    echo -e "a b c d\na b" | awk --field-separator=" " "{ print NF }"

    将显示:

    4
    2

    希望这会有所帮助,祝你睡得开心

    【讨论】:

    • 默认的字段分隔符是空格,所以echo "a b c d" | awk {'print NF'}就足够了..
    【解决方案2】:

    NF 给出给定记录的字段数:

    []$ echo "a b c d" | gawk '{print NF}'
    4
    

    【讨论】:

      【解决方案3】:

      如果您想知道多行内容中所有字段数的集合,您可以运行:

      X | awk '{print NF}' | sort -n | uniq
      

      作为X 一个在标准输出中输出内容的命令:catecho 等。示例:

      使用file.txt:

      a b
      b c
      c d
      e t a
      e u
      

      命令cat file.txt | awk '{print NF}' | sort -n | uniq 将打印:

      2
      3
      

      file2.txt:

      a b
      b c
      c d
      e u
      

      命令cat file2.txt | awk '{print NF}' | sort -n | uniq 将打印:

      2
      

      【讨论】:

        【解决方案4】:

        FreeBSD 上的awk(1) 无法识别--field-separator。请改用-v

        echo "a b c d" | awk -v FS=" " "{ print NF }"
        

        定义字段分隔符是a portable, POSIX way

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-06-10
          • 1970-01-01
          • 2013-11-13
          • 2014-05-05
          • 1970-01-01
          • 2013-05-26
          • 2020-03-01
          • 1970-01-01
          相关资源
          最近更新 更多