![다른 파일과 일치하는 줄을 찾아 별도의 파일에 저장](https://linux55.com/image/138539/%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EA%B3%BC%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EC%A4%84%EC%9D%84%20%EC%B0%BE%EC%95%84%20%EB%B3%84%EB%8F%84%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%A0%80%EC%9E%A5.png)
내 인구 프로필은 다음과 같습니다
pop.file
HG1W
HG2W
HG3W
HG4W
...
또 다른 파일에는 개인 ID(각 개인당 2개의 행, R1 및 R2)가 포함되어 있습니다.
ind.file
HI.2613.007.Index_18.ED17_HG1W26-7_353_R1.fastq.gz
HI.2613.007.Index_18.ED17_HG1W26-7_353_R2.fastq.gz
HI.2613.007.Index_14.ED14_HG1W35-2_310_R1.fastq.gz
HI.2613.007.Index_14.ED14_HG1W35-2_310_R2.fastq.gz
HI.2622.001.Index_16.ED16_HG2W9-3_342_R1.fastq.gz
HI.2622.001.Index_16.ED16_HG2W9-3_342_R2.fastq.gz
HI.2613.007.Index_1.ED1_HG2W12-3_33_R1.fastq.gz
HI.2613.007.Index_1.ED1_HG2W12-3_33_R2.fastq.gz
...
각 모집단의 개인을 별도의 파일에 저장하고 다음과 같은 출력 파일을 얻고 싶습니다.
head HG1.population
HI.2613.007.Index_18.ED17_HG1W26-7_353_R1.fastq.gz
HI.2613.007.Index_18.ED17_HG1W26-7_353_R2.fastq.gz
HI.2613.007.Index_14.ED14_HG1W35-2_310_R1.fastq.gz
HI.2613.007.Index_14.ED14_HG1W35-2_310_R2.fastq.gz
head HG2.population
HI.2622.001.Index_16.ED16_HG2W9-3_342_R1.fastq.gz
HI.2622.001.Index_16.ED16_HG2W9-3_342_R2.fastq.gz
HI.2613.007.Index_1.ED1_HG2W12-3_33_R1.fastq.gz
HI.2613.007.Index_1.ED1_HG2W12-3_33_R2.fastq.gz
답변1
그리고 awk
:
awk -F_ '
NR==FNR {ind[substr($1,1,3)]++}
{i = substr($3,1,3); f = i ".population"}
i in ind {print >> f; close(f)}
' pop.file ind.file
그 다음에
$ head HG*
==> HG1.population <==
HI.2613.007.Index_18.ED17_HG1W26-7_353_R1.fastq.gz
HI.2613.007.Index_18.ED17_HG1W26-7_353_R2.fastq.gz
HI.2613.007.Index_14.ED14_HG1W35-2_310_R1.fastq.gz
HI.2613.007.Index_14.ED14_HG1W35-2_310_R2.fastq.gz
==> HG2.population <==
HI.2622.001.Index_16.ED16_HG2W9-3_342_R1.fastq.gz
HI.2622.001.Index_16.ED16_HG2W9-3_342_R2.fastq.gz
HI.2613.007.Index_1.ED1_HG2W12-3_33_R1.fastq.gz
HI.2613.007.Index_1.ED1_HG2W12-3_33_R2.fastq.gz
답변2
이 시도,
for i in `cat pop.file | cut -c -3`
do
grep $i ind.file > $i.population
done