我有一个包含描述语言的单词的文档,我需要计算它们在文档中出现的次数,我必须只匹配C,C ++,Pascal,Scheme y Ada。 我如何在一行中实现它:
grep (C++|Ada|Pascal|Scheme|C)
答案 0 :(得分:0)
试试这个:
grep -o 'C++\|Ada\|Pascal\|Scheme\|C' * | wc -l
答案 1 :(得分:0)
正则表达式是一个复杂的主题。您希望匹配C
,但要避免匹配ABC
或Cookbook
,因此您需要确保只匹配整个字词(选项-w
)。您还想提取所有匹配项,而不仅仅是匹配的行,因为您可能在特定行中有多个匹配项(例如,在您的问题中)(选项-o
)。
grep -w -o 'C\|C++\|Pascal\|Scheme\|Ada' file | sort | uniq -c
# or
grep -w -o -e C -e 'C++' -e Pascal -e Scheme -e Ada file | sort | uniq -c
sort | uniq -c
会告诉您每个单词出现的次数。如果您只想要所有单词的总数,请使用wc -l
,因为其他单词已显示。