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 @   小鲨鱼2018  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2022-10-12 如何检测bam文件的完整性
2020-10-12 恭喜湖人,时隔十年,再次夺冠
2020-10-12 linux系统中id命令
2020-10-12 linux 系统中的 for 循环结构
2020-10-12 plink软件统计缺失率
点击右上角即可分享
微信分享提示