6

データを抽出する必要がある 2 つのテキスト ファイルがあるとします。2 つのファイルのテキストは次のとおりです。

ファイル 1:

1name - randomemail@email.com
2Name - superrandomemail@email.com
3Name - 123random@email.com
4Name - random123@email.com

ファイル 2:

email.com
email.com
email.com
anotherwebsite.com

ファイル 2 は、電子メール アドレスから抽出されたファイル 1 のドメイン名のリストです。これらは決して同じドメイン名ではなく、非常にランダムです。

ファイル 1 からファイル 2 に一致するドメイン名の結果を取得するにはどうすればよいですか?

前もって感謝します!

4

5 に答える 5

8

順序は関係ないと仮定すると、

grep -F -f FILE2 FILE1

トリックを行う必要があります。(これはあまり知られていない事実のために機能します:-Fオプション togrepは、単に「この固定文字列に一致する」という意味ではなく、「これらの改行で区切られた固定文字列のいずれかに一致する」ことを意味します。)

于 2012-10-13T02:23:54.663 に答える
2

レシピ:

join <(sed 's/^.*@//' file1|sort -u) <(sort -u file2) 

file1 と file2 のすべてのドメイン名の共通部分を出力します。

于 2012-10-13T02:27:38.180 に答える
1

VimDIFF コマンドを使用すると、違いがわかりやすく表示されます

于 2013-04-17T20:19:14.280 に答える
1

このタイプの問題に対する通常の解決策のリストについては、BashFAQ/036を参照してください。

于 2012-10-13T08:56:21.083 に答える
0

私の理解が正しければ、ファイル 2 に記載されているホストを含​​むすべてのアドレスをフィルター処理する必要があります。

その後、ループしてFile 2を grep し@<line>、結果を新しいファイルなどに蓄積することができます。

例:

cat file2 | sort -u | while read host; do grep "@$host" file1; done > filtered
于 2012-10-13T02:24:56.143 に答える