如何使用 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
我不太擅长 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