grep仅用于大写单词

Jas*_*nes 1 linux bash grep

我想找到所有大写的单词,但是当我这样做时

grep -oP '\w*[A-Z]+\w*' *
Run Code Online (Sandbox Code Playgroud)

我明白了

words.py:StringValue
words.py:WORDS
words.py:WORDS_ANSWERED
words.py:Answered
words.py:True
Run Code Online (Sandbox Code Playgroud)

我希望的地方

words.py:WORDS
words.py:WORDS_ANSWERED
Run Code Online (Sandbox Code Playgroud)

如何确保只输出所有大写单词?

anu*_*ava 6

您可以在任一侧使用带有字边界的此正则表达式,[A-Z0-9_]而不是使用\w:

grep -H -oP '\b[A-Z0-9_]*[A-Z]+[A-Z0-9_]*\b' *

words.py:WORDS
words.py:WORDS_ANSWERED
Run Code Online (Sandbox Code Playgroud)