我想找到所有大写的单词,但是当我这样做时
grep -oP '\w*[A-Z]+\w*' *
我了解
words.py:StringValue
words.py:WORDS
words.py:WORDS_ANSWERED
words.py:Answered
words.py:True
where I were hoping for
words.py:WORDS
words.py:WORDS_ANSWERED
问题
如何确保只输出所有大写字母的单词?
[A-Z0-9_]
代替\w
来匹配此正则表达式:grep -H -oP '\b[A-Z0-9_]*[A-Z]+[A-Z0-9_]*\b' *
words.py:WORDS
words.py:WORDS_ANSWERED
如果您不想在输出中包含 \w
,请不要将其包含在模式中。
grep -oP '[A-Z]+' *
grep -oP '\b[A-Z_0-9]+\b'
如果您想避免____
和类似的问题(它们在Python代码中常见吗?),请使用
grep -oP '\b[A-Z_0-9]*[A-Z][A-Z_0-9]*\b'
S
、A
和 T
是大写单词。所以这取决于您如何定义大写单词。从您的示例中,似乎您正在寻找更像 ^[A-Z_]+$
的东西。或者,如果您所说的“大写单词”是指“没有小写字符”,那么可以使用 [^a-z]+$
。
True
在输出中会变成T
。 - Jasmine Lognnes___
,其中没有任何大写字母。 - anubhava| grep -v '^_*$'
。 - choroba