UNIXの2つのファイルから一致するレコードを見つける方法


0

email_idsを含む2つのファイルがあります。1. Test1.txt 2. Test2.txt

Test1.txtの内容は次のとおりです。

abc@gmail.com xyz@gmail.com mns@gmail.com

Test2.txtの内容は次のとおりです。

jpg@gmail.com joy@yahoo.com abc@gmail.com pet@yahoo.com

ここで、abc @ gmail.comはTest1.txtとTest2.txtの共通IDです。これら2つのファイルからそのようなIDを見つけて、1つのファイルに挿入したいと思います。

提案してください。これら2つのファイル間で共通のIDが必要です。

回答:


2

試してください:

awk 'NR==FNR{A[$1]; next} $1 in A' file1 file2 > file.new

慣用的なAwkの+1 :)注意深く読む必要がありました:)少し驚いています。それでは、インデックス作成の単純な事実がエントリを作成するはずですか?これはPerlでは当てはまりませんが、Awkの実装はもちろん異なる場合があります。
エドワード14年

1
こんにちは@ Edward-Baudrez、はい、確かです。「in特定の配列要素の存在をテストする演算子は、その要素を存在させないものとします。存在しない配列要素への他の参照は、自動的にそれを作成します。」参照してくださいpubs.opengroup.org/onlinepubs/9699919799/utilities/...
Scrutinizer

だからの使用$1 in A右側には、そうでなければ、その発現は、アレイ要素を作成し、それは望ましくないであろう、意図的である..
Scrutinizer

@EdwardBaudrez:これにあなたの名前にスペースがあることを追加しました。
検査員14年

1
(やや壮大な)用語は「autovivification」であり、さまざまな方法で存在しますperl
Mr.spuratic 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.