2014-10-10 3 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[FNR]=[$1,$2]++;next}{print A[$3,$4]==A[FNR] ? $0"\t"1 :$0"\t"0}' file1 file2 
을 시도 현명한처럼 나는 일반적인 결과를 얻기 위해 awk 'NR==FNR{A[$1,$2]++;next}A[$3,$4]'file1 file2을 사용

오류가 발생합니다.

+0

배열의 이름을''FNR = [$ 1, $ 2] ++'의 오른쪽에 놓친 것 같습니다. – Ashkan

답변

1

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

는 인덱스로 FNR 사용 firest 행동으로 잘못 여기에 당신은`$ 3 $ 4

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

난 당신이 여기 ++을 사용하여 이해 didnt가를 사용하는 ??

당신은 여기에서 첫 번째 파일에 대한

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 

같은 출력을 줄 것이다

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 

NR==FNR 전체 라인이 A을 arrray에 복사되는 것을 줄을 사용하여 두 번째 파일에 대한되어야한다

NR!=FNR 어레이가 스플릿 된 경우 split$3$4

관련 문제