我有两个文件,其中3列相同,第4列不同。
档案A
a b c 100
e f g 50
h i j 25
文件B
a b c 200
e f g 20
h i j 15
文件A
和B
如何组合成文件C
?
文件C
a b c 100 200
e f g 50 20
h i j 25 15
- UPDATE -
我使用了Jotne和Kent提供的解决方案,但两个脚本的输出都有。 (点)而不是逗号。它看起来像
a,b,c,100.200
e,f,g,50.20
答案 0 :(得分:2)
这是一个awk
awk 'FNR==NR {a[$1,$2,$3]=$4;next} {print $0,a[$1,$2,$3]}' B A > C
cat C
a b c 100 200
e f g 50 20
h i j 25 15
答案 1 :(得分:0)
如果他们只有一个共同的列,join
可以成功。但是让我们使用它然后解析输出:
$ join <(sort f1) <(sort f2)
a b c 100 b c 200
e f g 50 f g 20
h i j 25 i j 15
这是基于第一列加入的。现在,让我们使用cut
获取除第5和第6列之外的所有内容:
$ join <(sort f1) <(sort f2) | cut -d' ' -f1-4,7
a b c 100 200
e f g 50 20
h i j 25 15
请注意使用sort
对文件进行排序,因为join
需要对文件进行排序才能工作。根据给定的样本数据,它在没有sort
的情况下工作,但为了保持一致性而添加。