根据特定列的值合并具有相同格式的两个文件

根据特定列的值合并具有相同格式的两个文件

我有两个文件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

相关内容