파일에서 두 번째 파일과 일치하는 줄을 추출하여 단일 파일로 병합합니다.

파일에서 두 번째 파일과 일치하는 줄을 추출하여 단일 파일로 병합합니다.

일부 위치가 포함된 파일이 있습니다.

head positions
142541687
142541814
142541910
142542976
142544533
142546366
142548674
142560386

1800개의 파일이 포함된 또 다른 폴더가 있는데, 각 파일은 한 사람(총 1800명)에게 속합니다. 2열은 위치이고 4열은 개인 ID입니다.

 head NA20507.mapped.ILLUMINA.bwa.TSI.low_coverage.20130415.bam_dp
1   142541687   78 NA20507
1   142535975   79 NA20507
1   142535976   79 NA20507
1   142535977   77 NA20507
1   142535978   78 NA20507
1   142535979   77 NA20507

아니면 다른 사람의 예를 들면,

head NA20901.mapped.ILLUMINA.bwa.GIH.low_coverage.20120522.bam_dp
1   142541687   135 NA20901
1   142535975   135 NA20901
1   142535976   137 NA20901
1   142535977   138 NA20901
1   142535978   138 NA20901
1   142535979   136 NA20901
1   142535980   135 NA20901

각 개별 파일에 대해 위치 파일의 위치가 있는 행만 유지하고 싶지만(개별 파일의 두 번째 열은 위치 파일과 일치함) 각 위치에 대해 개별적으로 저장하고 싶습니다!

   cat NA20507.mapped.ILLUMINA.bwa.TSI.low_coverage.20130415.bam_dp_match142541687
        1   142541687   78 NA20507

마지막으로 모든 개인에 대해 이 파일을 병합하고 싶습니다(예: 위치 142541687).

head desired_pos142541687
1   142541687   78  NA20507
1   142541687   135 NA20901

또는 위치 142542976;

desired_pos142542976

    1   142535976   79 NA20507
    1   142535976   137 NA20901

답변1

이는 이미 접한 비슷한 질문에 대한 대답과 거의 동일합니다. 먼저 하나의 파일(위치)을 읽은 다음 다른 파일을 구문 분석하고 데이터를 추출합니다.

awk 'NR == FNR { pos[$1]=1; next } $2 in pos { f="desired_pos" $2; print >>f; close(f) }' positions NA*.bam_dp

질문에 두 개의 개별 파일이 주어지고 positions142535975를 포함하는 경우 desired_pos142535975다음을 포함하는 파일이 생성됩니다.

1   142535975   79 NA20507
1   142535975   135 NA20901

모든 위치가 염색체 1(또는 적어도동일한염색체(개별 파일과 동일), 파일 내 위치 외에 염색체 이름 정보가 없기 때문입니다 positions.

관련 정보