スペースで区切られていない一致するすべての文字列を印刷するには、grepを使用します。

スペースで区切られていない一致するすべての文字列を印刷するには、grepを使用します。

電子メールのテキストファイルを検索し、特定のドメインから送信された電子メールのリストを取得しようとしています。

私は走っています:

grep -oh "\w*domain.com\w*" file.txt

これは行を見つけましたが、対応する「単語」のみを印刷します。つまり、このリストからコマンドを実行すると、次のようになります。

foo [email protected] bar
baz [email protected] abc
xyz [email protected] defg
klmn [email protected] ijk
yes [email protected] no

それは戻ってくる

domain.com
adomain.com
domain.com

「domain.com」を含む完全なメールアドレスを返したいです。

[email protected]
[email protected]
[email protected]

可能ですかgrep?ピリオドや@記号を単語セパレータとして扱わないように指示する必要があります。

編集:同じ行に表示したくない無関係なデータがたくさんあります。

ベストアンサー1

あなたが探している

grep -ho '\S*domain.com\S*' file

ここでは\S空白以外の文字と一致するため、この場合、空白の間に文字列grep"domain.com"を持つすべての項目が一致します。

または明示的に文字列のみを許可する場合@(明らかに英数字を除く):.

grep -ho '[[:alnum:].@]*domain.com[[:alnum:].]' file

このようにしてgrep文字列から抽出されます。[email protected][[email protected]]

おすすめ記事