0

現在再構築中のかなりモノリシックなデータベースがあり、内容がほぼ一致する 3 つのテーブルを結合したいと考えています。これらのセットはいくつかありますが、すべて 3 つのグループになっています。状況は次のとおりです。

-- すべてのテーブルが ASCII 形式で、スペースで区切られていることに注意してください ---

T1_01= 表 1 =

1 + 'stuff1' + additional content 1  (where additional content only sometimes available)

2  ""

3  ""

....400

T1_02= 表 2 =

1 + "different stuff" + additional content 2

2 ""

3 ""

... 400

T1_03 = 表 3 =

5 cols yet other stuff + 001 + additional content 3

5 cols yet other stuff + 003    ""

5 cols yet other stuff + 007    ""

...

5 cols yet other stuff + 399   some rows are skipped, varies which ones

5 cols yet other stuff + 400

私が欲しいのは、「グループ」ごとに3つのテーブルがあります。これらは便利な方法でグループ化されているためです。つまり、T1_01、T1_02、T1_03はグループ1のテーブル1、2、3になり、T2_01、T2_02、T2_03になります。これを合計で約60回行う必要があり、期待しているテーブル出力は次のとおりです。

T1_0123=

1 + 'stuff1' + additional content 1 1 + "different stuff" + additional content 2 5 cols yet other stuff + 001 + additional content 3
2 + 'stuff1' + additional content 1 2 + "different stuff" + additional content 2 "something to fill in the empty spaces, like a set of -99.9 values"
3 + 'stuff1' + additional content 1 3 + "different stuff" + additional content 2 5 cols yet other stuff + 003 + additional content 3
...
400 ""

今、私は最初の実行を行い、

join -1 1 -2 1 T1_01 T1_02 > T1_012うまく機能しますが、最初の 2 つと

join -1 1 -2 6 T1_01 T1_03... 001 は 1 ではないので機能しません

sed something awk $(cat list_of_T01) $(cat list_of_T02) $(cat list_of_T03)そして、3つのテーブルすべてを一度に実行してから、バッチジョブとして実行するようなことをしたいと思っ ていました。私はPythonを学んでいるので、これも可能かもしれませんが、確かにAWKの方が簡単ですか? どんな提案でも大歓迎です。

4

1 に答える 1

1

これを試してください:

join -1 1 -2 6 <(sed 's/^[0-9] /00&/;s/^[0-9][0-9] /0&/;' T1_01) T1_03

または、区切り文字がスペースでない場合は次のようになります。

join -1 1 -2 6 <(sed 's/^[0-9][^0-9]/00&/;s/^[0-9][0-9][^0-9]/0&/;' T1_01) T1_03
于 2012-08-13T06:59:21.477 に答える