【发布时间】:2014-09-21 07:49:27
【问题描述】:
我有 2 个已排序的文件,每个文件有 3 列。我需要根据前 2 列合并它们并返回 4 列,即匹配的 2 列,然后是每个文件的第 3 列。我曾尝试在 awk 中使用
awk 'NR==FNR{a[$1FS$2]=$3;NEXT}
{k=$1FS$2;print k,(a[k]?a[k]:a[k]*1),$3;delete a[k]}
END{for(k in a)print k,a[k],"0"}'
但它并没有像我希望的那样工作。
我的输入文件如下所示:
文件 1:
Chr BPPos Chip_1
1 1234 1
1 1765 2
1 2043 3
2 1231 4
文件 2:
Chr BPPos Chip_2
1 1765 1
1 2074 2
2 1231 3
2 2141 4
期望的输出:
Chr BPPos Chip_1 Chip_2
1 1234 1 0
1 1765 2 1
1 2043 3 0
1 2073 0 2
2 1231 4 3
2 2141 0 4
任何帮助将不胜感激!
史蒂夫
【问题讨论】: