shell脚本从单个fastq中提取成对的fastq

发布时间 2023-10-12 02:02:29作者: 小鲨鱼2018

 

## step1:
awk 'NR % 4 == 1' batch9.fastq | sed 'N; s/\n/\t/; s/\//\t/g' | awk '{if($1 == $3 && $2 != $4) {print (NR - 1) * 8 + 1, NR * 8}}' > index.txt

## step2:
head -n 1 index.txt | awk '{if($1 == 1) {next} else {for (i =1; i <= $1; i++) {print 0 }}}' > part1.txt

## step3:
awk '{if(NR == 1) {print $0; printf("%s ", $2)} else {print $1; print $0; printf("%s ", $2)}}' index.txt | sed '$d' | awk '{if(NR % 2 != 0) {a = $2 - $1 + 1; for(i = 1; i <= a ; i++) {print 1}} else { a = $2 - $1 - 1; for(i = 1; i <= a; i++) {print 0}}}' > part2.txt

## step3:
tail -n 1 index.txt | awk '{print $2}' | paste - <(wc -l < batch9.fastq ) | awk '{if($1 != $2) {for(i = 1; i <= $2 - $1; i++) print 0} else {printf("")}}' > part3.txt

## step4:
cat part1.txt part2.txt part3.txt > index2.txt
rm -f part1.txt part2.txt part3.txt index.txt

## step5:

paste index2.txt batch9.fastq | awk '$1 != 0' | cut -f 2- > result.fastq