根据数字字段合并/组合 2 个文本文件

根据数字字段合并/组合 2 个文本文件

我有 2 个文本文件

文件_1:

14595|Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5
14649|Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5

文件_2:

14595|Address xx|Info 6|Info 7|Info 8
14649|Address xxxz|Info 6|Info 7|Info 8

我想要一种方法来查找 file_1 第一列(数字列)并在 file_2 中找到其匹配项,并将两个文件的信息合并到 file_3 中,而无需数字键字段,因此输出如下

文件_3

Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5|Address xx|Info 6|Info 7|Info 8
Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5|Address xxxz|Info 6|Info 7|Info 8

答案1

使用join

$ join -t'|' file_1 file_2
14595|Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5|Address xx|Info 6|Info 7|Info 8
14649|Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5|Address xxxz|Info 6|Info 7|Info 8

-t表示字段分隔符。

为了加入作品,文件必须经过分类。你可以用sort它。

答案2

awk

$ awk 'BEGIN{FS=OFS="|"}NR==FNR{a[$1]=$0;next}{$1=a[$1]}1' file_1 file_2
14595|Age 35|Salary xx|Position ax|2013|Info 1|Info 2|Info 3|Info 4|Info 5|Address xx|Info 6|Info 7|Info 8
14649|Age 30|Salary xx|Position az|2015|Info 1|Info 2|Info 3|Info 4|Info 5|Address xxxz|Info 6|Info 7|Info 8

相关内容