2016-10-17 18 views
1

テキストファイルを検索するgrepコマンドを実行したいと思います。メールアドレスと特定のtldを一致させる必要があります。grep正規表現で特定のメールを検索する正規表現

例、テキストファイルに次の行

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

が含まれていると私は.com TLDメールを探していた場合:

それは私が[email protected][email protected]ではなく[email protected]

と一致する必要があります次のgrepコマンドを使用しています。これは.comを含むほとんどすべての文字列に一致します。私はそれが特異的ドメイン

grep -rnwi '@.+\.com$' "/Users/Me/Desktop/Folder/"は何にもマッチしない

grep -rnwi "/Users/Me/Desktop/Folder/" -e ".com" 

EDITのTLDを一致させたいです。 grep -rnwi "/Users/Me/Desktop/Folder/" -e "hotmail.com"は十分に一致します。私はhotmail.comだけでなく、すべての.comメールを望んでいません。

EDIT2これはどちらにもあてはまりません。それは私がフォルダ内の複数のテキストファイルを検索しているからですか?

grep -rnwi '@.\+\.com$' "/Users/Me/Desktop/Folder/" 

EDIT3:完全にはっきりしていない。 .tld拡張子の後に文字があるので、私は末尾の$を残しておかなければなりませんでした。それは動作します。

+1

パターンの末尾に '$'を追加して(バックスラッシュや文字クラスを使ってドットをエスケープしてください) '-e" [。] com $ "' – Tensibai

+0

@stef、 '-w'オプションあなたはそれが必要な理由を問題を作成していますか? – Sundeep

答えて

2

の操作を行います。

grep '@.\+\.com$' file.txt 
  • @.\+は、他のTLDのための同じを置き換えるために、エンド

で一の以上の文字.comリテラル

  • \.com$試合が続く@と一致しますそのTLDの末尾にcomがあります。

  • +0

    私は単純に '@。+ \。com $' –

    +0

    @ThomasAyoub Thを使用します。この場合、より頑強です。 – heemayl

    +0

    ご意見ありがとうございます。私の編集を参照してください – stef