如何使用 grep 计算 txt 文件中五个字母单词的数量?

How can I count the amount of five letter words in a txt file using grep?

我不太擅长 linux,我正在尝试使用 grep 来计算五个字母的单词。

使用c标志进行计数,查找包含五个字符的模式:

 $ cat file
 some text file containing many words and sentences.
 $ tr ' ' '\n' < file | grep -c '^[ \t]*[a-zA-Z]\{5\}[ \t]*$'
 1

您可以使用:

grep -o -w "\w\{5\}" your_file | wc -w

With -o 只打印匹配的单词,-w 表示正则表达式作为单词搜索,\w\{5\} - 正则表达式字符串本身(匹配 5 个连续的单词字符)。因此,your_file 包含

word1 word2 word3
long_word 123 word4

grep -o -w "\w\{5\}" your_file 的输出将是

word1
word2
word3
word4

Piped wc -w 只算这个。

注意:如果您不想匹配所有字母数字字符 - 用更具体的内容替换 \w 元字符。例如[a-z]——小写英文字母。

这个 gnu awk(由于记录选择器中有多个字符)确实计算了有多少个单词有 5 个字母。它会忽略 .,

awk -v RS="[ .,?!]|\n" 'length([=10=])==5 {a++} END {print a}' file