我试过这样的方法sed 's/^[ t]*//' file.txt | grep "^[A-Z].* "
但它将只显示以大写字母开头的单词的行。
file.txt内容:
Something1something2
word1Word2
这是较低的
输出将是Something1 something2,但我希望它也显示第二行,因为它还有一个以大写字母开头的单词。
使用GNU grepgrep -P "[A-Z]+w*" file.txt
将起作用。或者,正如@Shawn在下面的评论中所说,grep -P 'b[A-Z]' file.txt
也会起作用。如果你只想要单词,而不是整行,grep -Po "[A-Z]+w*" file.txt
会给你单独的单词。
使用GNUgrep
,您可以使用
grep '<[[:upper:]]' file
grep 'b[[:upper:]]' file
注意:
<
-前导字边界(b
是字边界([[:upper:]]
—任意大写字母
查看在线演示:
#!/bin/bash
s='Something1 something2
word1 Word2
this is lower
папа Петя'
grep '<[[:upper:]]' <<< "$s"
输出:
Something1 something2
word1 Word2
папа Петя
如何显示所有单词
很简单:
grep -wo '[A-Z]w*'