检查文件中包含特定字母的单词数

检查文件中包含特定字母的单词数

Bash 命令检查文件中包含字母“a”的单词数

答案1

假设我们有这个测试文件:

$ cat file
the cat in the hat
the quick brown dog
jack splat

通过grep采用 GNU-o扩展的实现,我们可以检索包含以下内容的所有单词a

$ grep -wo '[[:alnum:]]*a[[:alnum:]]*' file
cat
hat
jack
splat

我们可以数一下这些词:

$ grep -wo '[[:alnum:]]*a[[:alnum:]]*' file | wc -l
4

答案2

POSIXly:

<file tr -s '[:space:]' '[\n*]' | grep -c a

这里,是非空格字符的序列。

答案3

这是 Perl 的方式:

 perl -0lnE 'say scalar grep(/a/,split(/\s/,$_));' file

还有一个awk办法:

 awk '{for(i=1;i<=NF;i++){if($(i)~/a/){k++}}}END{print k}' file

答案4

awk 'BEGIN{RS="[[:space:][:punct:]]"; c=0}
     index($0,"a"){c++} 
     END{print c}'

awk使用支持多字符的版本埃科德S分隔符 ( RS),例如GNU awk,您可以让awk每条记录读取一个单词。

在该记录中,index(in, string)函数搜索in对于第一次出现的string,并返回1 为基础找到它的字符位置。如果没有找到则index()返回0。因此,返回值可以被视为布尔条件测试(0 = false,而不是零 = true)。请注意,这不是正则表达式搜索。

如果找到匹配项,则变量c加 1 ( c++)

c=0块中需要,BEGIN{}因为 whenc永远不会递增 - 这会导致cbenull代替0。处理这个问题的另一种方法是print 0+c(在END{}块中)

相关内容