2014-10-10 54 views
0

文件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 

但出現錯誤。

+0

我認爲你錯過了這個數組的名字,在'='右邊'A [FNR] = [$ 1,$ 2] ++' – Ashkan 2014-10-10 08:22:56

回答

1

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

是錯了,因爲在你使用FNR作爲指數firest動作,在這裏你正在使用`$ 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並與$3$4