bash – 按行名连接多个表
发布时间:2020-12-15 21:47:28 所属栏目:安全 来源:网络整理
导读:参见英文答案 Merging very large csv files with common column????????????????????????????????????6个 我想按行名称合并多个表.这些表的行数不同,它们具有唯一和共享的行,这些行应该全部出现在输出中.如果可能的话我想用awk解决问题,但我对其他解决方案
参见英文答案 >
Merging very large csv files with common column????????????????????????????????????6个
我想按行名称合并多个表.这些表的行数不同,它们具有唯一和共享的行,这些行应该全部出现在输出中.如果可能的话我想用awk解决问题,但我对其他解决方案也很好. table1.tab a 5 b 5 d 9 table2.tab a 1 b 2 c 8 e 11 输出我想获得下表: table3.tab a 5 1 b 5 2 d 9 0 c 0 8 e 0 11 我尝试过使用join join table1.tab table2.tab > table3.tab 但我明白了 table3.tab a 5 1 b 5 2 行c,d和e不在输出中. 解决方法
这个awk oneliner应该适用于你的例子:
awk 'NR==FNR{a[$1]=$2;k[$1];next}{b[$1]=$2;k[$1]} END{for(x in k)printf"%s %d %dn",x,a[x],b[x]}' table1 table2 测试 kent$ head f1 f2 ==> f1 <== a 5 b 5 d 9 ==> f2 <== a 1 b 2 c 8 e 11 kent$ awk 'NR==FNR{a[$1]=$2;k[$1];next}{b[$1]=$2;k[$1]}END{for(x in k)printf"%s %d %dn",b[x]}' f1 f2 a 5 1 b 5 2 c 0 8 d 9 0 e 0 11 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |