いくつかの場所を含むファイルがあります。
head positions
142541687
142541814
142541910
142542976
142544533
142546366
142548674
142560386
1800個のファイルを含む別のフォルダがあり、各ファイルは1人(合計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
個々のファイルごとに場所ファイルの場所を含む行だけを維持したいのですが(個々のファイルの2番目の列は場所ファイルと一致します)、各場所ごとに個別に保存したいと思います!
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
これは、すでに接している同様の質問に対する答えとほぼ同じです。まず、1つのファイル(場所)を読み取り、別のファイルを解析してデータを抽出します。
awk 'NR == FNR { pos[$1]=1; next } $2 in pos { f="desired_pos" $2; print >>f; close(f) }' positions NA*.bam_dp
質問に 2 つの個別のファイルが与えられ、positions
142535975 が含まれている場合、desired_pos142535975
次のファイルが生成されます。
1 142535975 79 NA20507
1 142535975 135 NA20901
すべての位置が染色体1(または少なくとも同じこれは、染色体(個々のファイルと同じ)、ファイル内の場所以外に染色体名情報がないためですpositions
。