我有 2 个 TSV 文件:
TSV file 1:
A B
hello 0.5
bye 0.4
TSV file 2:
C D
hello 1
country 5
我想根据 file1.A=file2.C
将 2 个 TSV 文件连接在一起
如何使用linux中的join函数来做到这一点?
希望得到这个:
Text B D
hello 0.5 1
bye 0.4
country 5
没有得到任何输出:
join -j 1 <(sort -k1 file1.tsv) <(sort -k1 file2.tsv)
最佳答案
有点毛茸茸的,但这里有一个使用 awk
和关联数组的解决方案。
awk 'FNR == 1 {h[length(h) + 1] = $2}
FILENAME ~ /test1.tsv/ && FNR > 1 {t1[$1]=$2}
FILENAME ~ /test2.tsv/ && FNR > 1 {t2[$1]=$2}
END{print "Text\t"h[1]"\t"h[2];
for(x in t1){print x"\t"t1[x]"\t"t2[x]}
for(x in t2){print x"\t"t1[x]"\t"t2[x]}}' test1.tsv test2.tsv |
sort | uniq
关于linux - 使用内连接连接两个 TSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31014528/