grep [az] 产生 1 个字符

grep [az] 产生 1 个字符

我正在尝试 grep 查找具有两个可识别字符的特定字符串..示例是

grep -rhIo '[a-zA-z]@[a-zA-z]\.com]

输入文件示例:

name:phone:[email protected]

理论上应该输出:

[email protected]

但它只会输出

e@e

所以我需要如何表明 az 可以是无限长度而不仅仅是一个字符

答案1

我什至不会grep在您发布的示例中使用,它很简单,可以通过以下方式处理cut

$ echo name:phone:[email protected] | rev | cut -d: -f1 | rev
[email protected]

编辑:

但如果你想要grep它会是这样的:

$ echo name:phone:[email protected] | grep -oE '[a-zA-Z]+@[a-zA-Z]+\.com'
[email protected]

请注意,它+代表one or more instances正则表达式中的前一个字符,并且-E必须与 grep 一起使用才能正常工作:

-E, --extended-regexp

      Interpret PATTERN as an extended regular expression (ERE, see below).
      (-E is specified by POSIX.)

相关内容