如何使用 ubuntu grep 查找文本中大写单词的数量?

Har*_*ana 2 regex bash grep

我想使用 ubuntu 终端 'grep' 命令查找文本文件中大写单词的数量。我已经尝试过使用grep -c [[:upper:]] a.txt命令。但它也计算具有简单字符的单词。

我的文字:我是汤姆·佩雷拉

我的命令行输出应该是2,即单词是“ I ”和“ PERERA ”。

Hun*_*len 5

我相信该-c标志仅返回匹配的行数。如果每行有多个匹配项,则会给出错误的结果。我通常会做这样的事情:

echo 'I am Tom PERERA' | grep -oE '\b[A-Z]+\b' | wc -l
Run Code Online (Sandbox Code Playgroud)

'\b[[:upper:]]+\b'注意:如果您喜欢 POSIX 类,也可以使用

编辑:正如 @tripleee 指出的,POSIX 类[:upper:]将跨越语言环境,并且是一个更可移植的解决方案。

  • `[[:upper:]]` 会比 `[AZ]` 更好,因为它可以跨语言环境移植(例如,`GÖTTERDÄMMERUNG` 应注册为全部大写,特别是如果您有德语语言环境)。 (2认同)