比较两个文件的两列并给出条件

时间:2014-10-10 08:18:34

标签: awk

文件1:

chr pos1 sample Gene
chr1 123 sample1 x
chr1 234 sample2 Y
chr2 345 sample2 z

文件2:

sample Gene chr pos1 
sample1 x chr1 123 
sample2 A chr1 234 
sample2 c chr3 123 
sample2 z chr2 345 

我使用awk 'NR==FNR{A[$1,$2]++;next}A[$3,$4]'file1 file2来获得常见的结果,就像我试过的那样明智

awk 'NR==FNR{A[FNR]=[$1,$2]++;next}{print A[$3,$4]==A[FNR] ? $0"\t"1 :$0"\t"0}' file1 file2 

但是收到错误。

1 个答案:

答案 0 :(得分:1)

print A[$3,$4]==A[FNR]`

是错误的,就像你使用FNR作为索引的最火焰动作一样,你在这里使用`$ 3,$ 4

`A[FNR]=[$1,$2]++;`   

我不明白你在这里使用++ ??

你应该使用一些行

awk 'NR==FNR{A[FNR]=$0;}NR!=FNR{split(A[FNR],line); if (line[1] == $3 && line[2]==$4) print $0 1; else print $0 0}' file1 file2

将输出

sample Gene chr pos1 1
sample1 x chr1 123 1
sample2 A chr1 234 1
sample2 c chr3 123 0
sample2 z chr2 345 0

这里针对第一个文件,NR==FNR整行被复制到arrray A,当NR!=FNR数组被分割split并用{检查}时,第二个文件被复制到第二个文件{1}}和$3