linux - 如何使用awk从文本文件中打印多个字符串的总数

标签 linux awk

我是 awk 的新手,所以我在解决这个问题时遇到了一些麻烦。我需要做的是编写一个脚本来打印三个字符串“They”、“He”、“She”的计数,但我只能在 awk 中执行此操作并且单词区分大小写。到目前为止,它只打印“他们”在文本文件(这是一篇文章)中出现的次数,而不是其他的。关于如何仅在 awk 中执行此操作的一些输入会很棒。这是我目前所拥有的

awk 'BEGIN {print "They" " " "He" " " "She"} #printing header {for (i=0;i<=NF;i++)if ( $i =="They" ) numA++; if ( $i =="He" ) numB++; if ( $i =="She" ) numC++ } END {print numA," ", numB, " ", numC}' myFile.txt

预期的输出应该是:

They He She 24 16 17

最佳答案

您缺少“for”循环的大括号 - 您应该:

awk 'BEGIN {print "They" "  " "He" "  " "She"} #printing header
    {for (i=0;i<=NF;i++)
        {
            if ( $i =="They" ) numA++;
            if ( $i =="He" ) numB++;
            if ( $i =="She" ) numC++;
         }
} END {print numA,"  ", numB, "  ", numC}' myFile.txt

关于linux - 如何使用awk从文本文件中打印多个字符串的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733213/

相关文章:

linux - 是否可以在 Pharo smalltalk 中编写 shell 命令?

c - 多线程程序C中的段错误

Linux 标准输入、标准输出、标准错误

linux - 在 CMake Linux 中包含 OpenCV

linux - awk 在同一行打印两个变量

linux - 使用 awk 打印由 "-"分隔的变量

linux - 如何使用cclive串流视频?

bash - 如何将一个输出中的特定行添加到另一个输出中的特定行?

linux - 如何打印 column1 中的所有行以及其他列中的某些行

perl - sed、awk 或 perl : Pattern range match, 打印 45 行然后添加记录分隔符