他のデータファイルと比較してデータファイルから特定の行を抽出する方法は? (マージ)[重複]

他のデータファイルと比較してデータファイルから特定の行を抽出する方法は? (マージ)[重複]

2つの異なるファイルがあります。

first file:
id1 19501112
id2 19831207
1d4 20001212
id6 20000101
id10 20061213
id11 20081212
id12 20100109
id13 20101218
id14 20101212
id15 20111111
id16 20150919
id20 20141415

2番目のファイルは次のとおりです。

id100
id2
id4
id44
id10
id16
id2000
id34
id5
id7

そのため、2番目のファイルと同じIDを持つファイル1からその行を抽出したいと思います。そのため、出力ファイルが次のようになりたいと思います。

id2 19831207
1d4 20001212
id10 20061213
id16 20150919

どんな提案がありますか?

ベストアンサー1

GNU grepを使用してください:

grep -w -f file2.txt file1.txt 

これはgrep完全な「単語」のみを一致させ、file2.txtから検索するパターンのリストを取得するように指示します。

file2.txtの内容がfile1.txtの残りの行に表示される可能性がある場合は、次のようにsedとbashを使用してプロセス置換を使用できます。

grep -f <(sed -e 's/^/^/ ; s/$/\\b/' file2.txt) file1.txt

これは、sedを使用してNETで使用される前にidN各行を変換します。^idN\bgrep -f

おすすめ記事