Grep 如何用一个大写字母来修饰一个单词?
txt文件是: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
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不知道其他可能有用的工具(对于新手来说并非不可能)。这是一个标准的实用程序,为什么不提呢?