如何在bash中使用grep显示所有以1个大写字母开头的单词



我试过这样的方法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*'

最新更新