-1

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

私の暫定的な計画は次のとおりです。

  1. input1 のスタイルで、input2 の追加の識別子を生成します (簡単)
  2. input1 に出現しない行を input2 から除外します (難しい)
  3. 次に、input1 からのデータを貼り付けます (簡単)

Rならできるかもしれませんが、データが大きくて複雑なので、bashやperlでなんとかできないかと思っていました。正しい方向へのヒントは何でも良いでしょう。

4

1 に答える 1