두 개의 파일이 있습니다.
1_file.txt:
ChrX 129759713 A G
ChrX 129760010 C T
ChrX 129762238 C G
ChrX 129762448 A G
ChrX 129762803 A C
ChrX 129763441 C A
ChrX 129764931 T C
ChrX 129767696 C T
ChrX 129818213 C T
ChrX 129841336 T C
2_files.txt:
Chr29 129841336 T C
Chr29 129845233 A G
Chr29 129852688 T C
Chr29 129871602 G T
Chr29 129872683 T C
ChrX 129875545 C A
ChrX 129876975 A G
ChrX 129879796 G A
ChrX 129880521 T C
ChrX 129759713 A G
ChrX 129760010 C T
ChrX 129762238 C G
ChrX 129762448 A G
ChrX 129762803 A C
ChrX 129763441 C A
두 개의 파일을 필드 1과 2로 하나로 병합하고 싶습니다.
The answer
ChrX 129759713 A G
ChrX 129760010 C T
ChrX 129762238 C G
ChrX 129762448 A G
ChrX 129762803 A C
ChrX 129763441 C A
Join 또는 awk를 사용하여 이를 수행하는 방법에 대한 아이디어가 있습니까?
답변1
두 번째 파일에서 누락된 줄이 있습니까? "TG" 또는 "AT"가 있는 항목은 표시되지 않습니다. 내가 아는 한 join
두 필드는 허용되지 않으며 sed를 사용하여 두 필드를 연결할 수 있습니다. 구체적인 예에 대한 예는 다음과 같습니다.
join -j 1 <(cat 1_file.txt | sed "s/ /_/") <(cat 2_files.txt | sed "s/ /_/")
답변2
awk를 사용하면 사용할 수 있습니다
awk '
NR == FNR {f1[$1,$2] = $0; next}
$1 SUBSEP $2 in f1 {print f1[$1,$2], $3, $4}
' 1_file.txt 2_files.txt
ChrX 129759713 A G A G
ChrX 129760010 C T C T
ChrX 129762238 C G C G
ChrX 129762448 A G A G
ChrX 129762803 A C A C
ChrX 129763441 C A C A
awk 구문과 작동 방식에 대한 자세한 내용은 다음을 참조하세요.스택 오버플로의 awk 정보 페이지
여기: