Grep 如何用一个大写字母来修饰一个单词?

Grep 如何用一个大写字母来修饰一个单词?,grep,letter,Grep,Letter,txt文件是: bar quux kabe Ass sBo CcdD FGH 在本例中,我只想用一个大写字母对单词进行grep,但当我使用“grep[A-Z]”时,它会显示所有带大写字母的单词 有人能在这里找到“grep”解决方案吗?我的预期产出是 Ass sBo grep'\'my.txt 将匹配ASCII文本文件my.txt中的行,如果它们至少包含一个完全由ASCII字母组成的单词,其中正好有一个是大写字母。您似乎有一个文本文件,每个单词都有自己的行 你可以用 grep '^[[:lo

txt文件是:

bar
quux
kabe
Ass
sBo
CcdD
FGH
在本例中,我只想用一个大写字母对单词进行grep,但当我使用“grep[A-Z]”时,它会显示所有带大写字母的单词

有人能在这里找到“grep”解决方案吗?我的预期产出是

Ass
sBo
grep'\'my.txt

将匹配ASCII文本文件
my.txt
中的行,如果它们至少包含一个完全由ASCII字母组成的单词,其中正好有一个是大写字母。

您似乎有一个文本文件,每个单词都有自己的行

你可以用

grep '^[[:lower:]]*[[:upper:]][[:lower:]]*$' file
grep '^[^[:upper:]]*[[:upper:]][^[:upper:]]*$' file

^
匹配字符串的开头(这里,行,因为
grep
在默认情况下是逐行运行的),然后
[:lower:]*
匹配0个或多个小写字母,然后
[[:lower:]
模式匹配任何大写字母,然后
[:lower:]]*
匹配0+个小写字母,
$
在字符串末尾声明位置

如果需要将整行与一个大写字母匹配,可以使用

grep '^[[:lower:]]*[[:upper:]][[:lower:]]*$' file
grep '^[^[:upper:]]*[[:upper:]][^[:upper:]]*$' file
与上面的模式唯一不同的是
[^[:upper:]
括号表达式,它匹配除大写字母以外的任何字符。看

要提取包含单个大写字母的单词,可以使用单词边界,如mathguy的答案所示。有了GNU grep,您还可以使用

grep -o '\b[^[:upper:]]*[[:upper:]][^[:upper:]]*\b' file
grep -o '\b[[:lower:]]*[[:upper:]][[:lower:]]*\b' file

请参阅。

单词仅指字母吗?默认情况下,“word”字符为字母、数字和下划线。请澄清-您所有的测试输入都是字母,但在您的真实数据中是真的吗?
awk-F[A-Z]NF==2
?@oguzismail-这是OP要求的
grep
解决方案吗?@mathguy-nah,这就是为什么它是comment@mathguy也许OP不知道其他可能有用的工具(对于新手来说并非不可能)。这是一个标准的实用程序,为什么不提呢?