grepを使用してファイルから電子メールアドレスを取得するか、正規表現が機能しませんか?

grepを使用してファイルから電子メールアドレスを取得するか、正規表現が機能しませんか?

そのため、次のような電子メールを含むファイルがあります。

[email protected]:theirUsername

[email protected]:theirUsername

...

PAで始まり、ランダムな6文字、@gmail.com、次のような電子メールを抽出したいと思います。ユーザー名は、ユーザー名が何であるかは重要ではありません。

私はこれを使用しようとしています:

egrep "^PA[a-zA-Z0-9-.+_]{6}@gmail.com:[a-zA-Z0-9-.+_]+"

grepで試しましたが、まだ動作しませんが、動作しませんか?長い間egrepに正規表現を使用しておらず、マニュアルを読んでも役に立ちませんでした。ここで私が何を間違っているのでしょうか?正しい入力方法は何ですか?

答え1

本当に「任意の6文字」だけが欲しく、その後の内容は気にしなければ:簡単に簡素化できます。:次の内容を一致させようとしないで、.PAの後の文字にaを使用してください。

egrep '^PA.{6}@gmail.com:'

例えば

% cat f
hello
[email protected]:jgkfd
[email protected]
[email protected]:

% egrep '^PA.{6}@gmail.com:' f
[email protected]:jgkfd

関連情報