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

 

001、方法1

## 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

 

 。

002、方法2

#!/bin/bash

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

## step2:
awk '{if(NR == FNR) {ay[$1]} else {if (FNR in ay) {print $0}}}' index.txt batch9.fastq > result.fastq

rm -f index.txt

 

003、方法3

(base) [b20223040323@admin1 test02]$ cat record.sh
#!/bin/bash

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

## step2:
paste index.txt batch9.fastq | awk '{if($1 == 1) {$1 = ""; sub(/ /, ""); print $0 > "1.fastq"} else if($1 == 2) {$1 = ""; sub(/ /, ""); print $0 > "2.fastq"} else {$1 = ""; sub(/ /, ""); print $0 > "3.fastq"} }'

 .

 

posted @ 2023-10-12 01:56  小鲨鱼2018  阅读(20)  评论(0编辑  收藏  举报