grep [az]は1つの文字を生成します。

grep [az]は1つの文字を生成します。

私は2つの認識された文字を含む特定の文字列を見つけるためにgrepを試しています。例は次のとおりです。

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

入力ファイルの例:

name:phone:[email protected]

理論的には、次のように出力する必要があります。

[email protected]

しかし、それだけで出力されます

e@e

それでは、azがただ1文字ではなく無限の長さである可能性があることをどのように示すべきですか?

ベストアンサー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]

これは正規表現の前の文字+を表し、正しく機能するにはgrepで使用する必要があります。one or more instances-E

-E, --extended-regexp

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

おすすめ記事