두 파일 사이에 일치하는 모든 줄(중복 포함)을 인쇄하는 방법
소스 파일:
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