awk는 중복 항목을 포함하여 일치하는 모든 줄을 인쇄합니다.

awk는 중복 항목을 포함하여 일치하는 모든 줄을 인쇄합니다.

두 파일 사이에 일치하는 모든 줄(중복 포함)을 인쇄하는 방법

소스 파일:

SNP value
RS1 0.55
RS2 0.52
RS3 0.25
RS4 0.22

쿼리 파일:

SNP
RS1
RS2
RS2
RS3
RS4
RS4

원하는 출력:

SNP value
RS1 0.55
RS2 0.52
RS2 0.52
RS3 0.25
RS4 0.22
RS4 0.22

현재 일치하는 행을 검색하기 위해 다음 명령을 사용하고 있지만 중복 항목이 제거되는 반면 중복 항목을 포함한 모든 행을 인쇄해야 합니다.

어떤 제안이라도 부탁드립니다

감사해요

awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[$1]=$0;next}a[$1]{print}' queryfile sourcefile > output

답변1

join명령은 이 두 파일을 함께 연결합니다.

join sourcefile queryfile

출력(샘플 파일에서)

SNP value
RS1 0.55
RS2 0.52
RS2 0.52
RS3 0.25
RS4 0.22
RS4 0.22

답변2

본질적으로 파일을 역순으로 처리하는 문제입니다.

$ awk 'BEGIN{FS=OFS="\t"} NR==FNR{a[$1]=$0;next} a[$1]{print a[$1]}' sourcefile queryfile
SNP value
RS1 0.55
RS2 0.52
RS2 0.52
RS3 0.25
RS4 0.22
RS4 0.22

관련 정보