在bash中如何使用grep显示所有以1个大写字母开头的单词?
How do you display all the words that start with 1 uppercase letter using grep in bash?
我试过这样的
sed 's/^[ \t]*//' file.txt | grep "^[A-Z].* "
但它只会显示以大写开头的单词开头的行。
file.txt内容:
东西 1 东西 2
字 1 字 2
这是更低的
输出将是 Something1 something2,但我希望它也显示第二行,因为还有一个以大写字母开头的单词。
使用 GNU grep grep -P "[A-Z]+\w*" file.txt
即可。或者,正如@Shawn 在下面的评论中所说, grep -P '\b[A-Z]' file.txt
也可以。如果您只想要单词,而不是整行,grep -Po "[A-Z]+\w*" file.txt
将为您提供单个单词。
使用 GNU grep
,您可以使用
grep '\<[[:upper:]]' file
grep '\b[[:upper:]]' file
注意:
\<
- 前导词边界(\b
是词边界)
[[:upper:]]
- 任何大写字母。
参见 online demo:
#!/bin/bash
s='Something1 something2
word1 Word2
this is lower
папа Петя'
grep '\<[[:upper:]]' <<< "$s"
输出:
Something1 something2
word1 Word2
папа Петя
How do you display all the words
很简单:
grep -wo '[A-Z]\w*'
我试过这样的
sed 's/^[ \t]*//' file.txt | grep "^[A-Z].* "
但它只会显示以大写开头的单词开头的行。
file.txt内容:
东西 1 东西 2
字 1 字 2
这是更低的
输出将是 Something1 something2,但我希望它也显示第二行,因为还有一个以大写字母开头的单词。
使用 GNU grep grep -P "[A-Z]+\w*" file.txt
即可。或者,正如@Shawn 在下面的评论中所说, grep -P '\b[A-Z]' file.txt
也可以。如果您只想要单词,而不是整行,grep -Po "[A-Z]+\w*" file.txt
将为您提供单个单词。
使用 GNU grep
,您可以使用
grep '\<[[:upper:]]' file
grep '\b[[:upper:]]' file
注意:
\<
- 前导词边界(\b
是词边界)[[:upper:]]
- 任何大写字母。
参见 online demo:
#!/bin/bash
s='Something1 something2
word1 Word2
this is lower
папа Петя'
grep '\<[[:upper:]]' <<< "$s"
输出:
Something1 something2
word1 Word2
папа Петя
How do you display all the words
很简单:
grep -wo '[A-Z]\w*'