根據特定列的值合併具有相同格式的兩個文件

根據特定列的值合併具有相同格式的兩個文件

我有兩個文件stat_1.txt&stat_2.txt。如下:

工作 ID |執行時間處理時間

--------+--------------------

12345 | 00:04:42.454282

12346 | 00:03:26.360487

=====================

工作 ID |執行時間處理時間

--------+--------------------

12347| 00:01:43.634521

12345 | 00:02:34.321451

當然,每個文件中還有數千筆記錄。我需要將其安排在一個文件中職位編號這兩個文件中都存在,用於對執行時間進行比較分析。 (類似於我們在表格連接中可能執行的操作。)我該如何執行此操作?我確信 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 是兩個要合併的文件

這是一個範例:

[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

相關內容