私は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.)