【问题标题】:Count the number of words in a lines in a file but ignoring Enter Key计算文件中一行中的单词数,但忽略 Enter 键
【发布时间】:2017-12-30 22:57:51
【问题描述】:

我正在使用下面的命令来计算行中的单词数,但它给出了单词数加一作为输出。

awk '{ print length($0); }' abc.txt

如何在计算一行中的单词数时忽略最后一个字符或输入键?

【问题讨论】:

    标签: shell unix awk scripting


    【解决方案1】:

    这个 awk 脚本应该可以工作:

    #!/usr/bin/awk -f
    
    BEGIN { num=0 }
    {
        num=num + NF
    }
    END {print num}
    

    【讨论】:

    • 欢迎来到堆栈溢出。这应该打印所有文件中的字段数,问题是number of words in the line
    【解决方案2】:

    也许您可以像这样在awk 中使用NF 变量?

      echo "this is a test" | awk '{print NF}'
    

    打印4

    我不确定您希望从打印整个样件的长度中得到什么。这将为您提供字符数。不是字数。

    【讨论】:

      【解决方案3】:

      不提供字符

      awk '{ print length($0); }' abc.txt
      

      不给出单词,其中字段分隔符为单个空格

      awk '{ print NF; }' abc.txt
      

      【讨论】:

      • 第一个命令仍然计算加一而不是行中的字符数
      • @RahulkumarBudhwani 使用第二个,它在一行中没有字段/单词,它认为空格是单词之间的分隔符
      • 第二个给出了一行中的单词数。我需要的是如何计算一行中的字符数,不包括最后一个作为输入键的字符。
      • @RahulkumarBudhwani 为什么不只是 awk '{ print length($0); }' abc.txt 它打印你需要的东西
      • 它会计算一个额外的索引,如果您的文本文件中有多行,您可以查看该索引,对于最后一行,它不计算该额外索引,因为最后一行中没有换行符.
      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 2020-12-17
      • 1970-01-01
      • 2011-05-04
      • 2015-06-02
      • 2022-11-23
      • 1970-01-01
      相关资源
      最近更新 更多