2 つの同様の「テーブル形式」のテキスト ファイルがあり、それぞれ数百万レコードの長さがあります。inputfile1 では、一意の識別子は他の 2 つの列の値を結合したものです (どちらも一意の識別子ではありません)。inputfile2 では、一意の識別子は 2 文字の後にランダムな 4 桁の数字が続きます。
inputfile1 の一意の識別子を、inputfile2 の対応する一意の識別子に置き換えるにはどうすればよいですか? 最初のテーブルのすべてのレコードが 2 番目のテーブルに存在しますが、その逆はありません。以下は、ファイルのおもちゃの例です。
入力ファイル 1:
Grp Len ident data
A 20 A_20 3k3bj52
A 102 A_102 3k32rf2
A 352 A_352 3w3bj52
B 60 B_60 3k3qwrg
B 42 B_42 3kerj52
C 89 C_89 3kftj55
C 445 C_445 fy5763b
入力ファイル 2:
Grp Len ident
A 20 fz2525
A 102 fz5367
A 352 fz4678
A 356 fz1543
B 60 fz5732
B 11 fz2121
B 42 fz3563
C 89 fz8744
C 245 fz2653
C 445 fz2985
C 536 fz8983
望ましい出力:
Grp Len ident data
A 20 fz2525 3k3bj52
A 102 fz5367 3k32rf2
A 352 fz4678 3w3bj52
B 60 fz5732 3k3qwrg
B 42 fz3563 3kerj52
C 89 fz8744 3kftj55
C 445 fz2985 fy5763b
私の暫定的な計画は次のとおりです。
- input1 のスタイルで、input2 の追加の識別子を生成します (簡単)
- input1 に出現しない行を input2 から除外します (難しい)
- 次に、input1 からのデータを貼り付けます (簡単)
Rならできるかもしれませんが、データが大きくて複雑なので、bashやperlでなんとかできないかと思っていました。正しい方向へのヒントは何でも良いでしょう。