
ファイルが2つあります統計_1.txt&統計_2.txt。 次のように:
ジョブID | 実行時間
--------+--------------------
12345 | 00:04:42.454282
12346 | 00:03:26.360487
====================
ジョブID | 実行時間
--------+--------------------
12347 | 00:01:43.634521
12345 | 00:02:34.321451
もちろん、各ファイルには何千ものレコードがあります。1つのファイルに整理する必要があります。ジョブIDこれらは両方のファイルに存在し、実行時間の比較分析を行います。(テーブル結合で行うのと同様です。) これを実行するにはどうすればよいでしょうか? bash にはエレガントな方法があるはずです。
ファイルは注文されていないjob_id 別。一部の job_id は、一方のファイルにのみ存在し、もう一方のファイルには存在しません。(上記の表が雑に見えたら申し訳ありません。フォーマットに慣れておらず、少し急いでいます。)
答え1
そうやってもいいんだよ
awk 'NR==FNR{a[$1$2]=$3;next}
{k=$1$2;print k,a[k],$3;delete a[k]}
END{for(k in a)print k,a[k]}' test1 test2
test1とtest2は結合する2つのファイルです
次に例を示します。
[xxxx@xxxx test]$ awk 'NR==FNR{a[$1$2]=$3;next}
{k=$1$2;print k,a[k],$3;delete a[k]}
END{for(k in a)print k,a[k]}' test1 test2
job_id | execution_time execution_time
--------+--------------------
12347 | 00:01:43.634521
12345 | 00:04:42.454282 00:02:34.321451
12346 | 00:03:26.360487