【发布时间】:2016-01-12 15:03:42
【问题描述】:
我有两个文件:
文件1:
chr1 100736194 46 0.731 + 100735713 100736636
chr1 100736194 49 0.879 + 100735723 100736646
chr1 100736196 54 0.952 + 100735753 100736666
文件2:
chr1 100735713 100736636 + BMCHAS
chr1 100735723 100736646 + ATCGSG
chr1 100735753 100736666 + BDUSUS
我想加入文件1和2基于
- file1 的第 6 列和第 7 列,以及
- file2 的第 2 列和第 3 列
输出类似:
chr1 100736194 46 0.731 + 100735713 100736636 BMCHAS
chr1 100736194 49 0.879 + 100735723 100736646 ATCGSG
chr1 100736196 54 0.952 + 100735753 100736666 BDUSUS
我不知道如何将 join 用于多个列,我查找了一个 awk 解决方案并一直在尝试实现它,但我认为我在某个地方不正确,我正在使用的命令是:awk 'NR==FNR{a[$1,$2]=$5;next}{$3=a[$7,$8];print}' OFS='\t' file2 file1,
此外,重要的是不要匹配每个文件中的一列,而是匹配两列,因为单列不够唯一。这意味着我不能使用单列匹配解决方案,例如仅将 file1 的第 6 列与 file2 的第 2 列匹配,它必须使用上面的多个指定列。
提前致谢。
【问题讨论】:
-
如果您标记 bash 或 shell 或其他东西,可能会得到更多答案
-
是否可以只加入一个字段,例如 file1 的第 6 列匹配 file2 的第 2 列?
-
我想我宁愿同时使用两者,因为各个列不是唯一的
标签: bash shell join multiple-columns