順序が異なる2つのファイルのデータをマージします。

順序が異なる2つのファイルのデータをマージします。

以下のように2つのファイルがあります。そのホスト名と一致するように、file1からfile2までのID番号を適用する必要があります。必要な出力も下にあります。可能であれば、bashスクリプトを使用してこれを行うことをお勧めしますが、代替方法があります。

ファイル1:

ID: 12345, Name: foo1.bar.com
ID: 12346, Name: foo2.bar.com
ID: 12347, Name: foo3.bar.com
ID: 12348, Name: foo4.bar.com
ID: 12349, Name: foo5.bar.com

ファイル2:

foo3.bar.com
foo4.bar.com
foo1.bar.com
foo5.bar.com
foo2.bar.com

希望の出力 -

12347 foo3.bar.com
12348 foo4.bar.com
12345 foo1.bar.com
12349 foo5.bar.com
12346 foo2.bar.com

この問題を解決するための最良の方法のアイデアはありますか?

ベストアンサー1

最初のファイルでルックアップテーブル/ハッシュ/関連付けの配列を作成し、2番目のファイルの内容を使用して入力します。

awk -F'[ ,]+' 'NR==FNR {a[$NF] = $2; next} $1 in a {print a[$1], $1}' file1 file2
12347 foo3.bar.com
12348 foo4.bar.com
12345 foo1.bar.com
12349 foo5.bar.com
12346 foo2.bar.com

おすすめ記事