fasta和fastq格式文件的shell小练习
2019-04-07 本文已影响0人
weixinsuoxian
练习题来源:http://www.bio-info-trainee.com/3575.html
#1) 统计reads_1.fq 文件中共有多少条序列信息
wc reads_1.fq
cat reads_1.fq | paste - - - - | wc
awk '{if(NR%4==0) print}' reads_1.fq | wc
#NR 是awk的参数,表示行号,对行号求余数(%)
#2)输出所有的reads_1.fq文件中的标识符(即以@开头的那一行)
cat reads_1.fq | paste - - - - | cut -f1
awk '{if(NR%4==1) print}' reads_1.fq
#3) 输出reads_1.fq文件中的 所有序列信息(即每个序列的第二行)
cat reads_1.fq | paste - - - - | cut -f2
awk '{if(NR%4==2) print}' reads_1.fq
#4)输出以‘+’及其后面的描述信息(即每个序列的第三行)
cat reads_1.fq | paste - - - - | cut -f3
awk '{if(NR%4==3) print}' reads_1.fq
#5)输出质量值信息(即每个序列的第四行)
cat reads_1.fq | paste - - - - | cut -f4
awk '{if(NR%4==0) print}' reads_1.fq
#6) 计算reads_1.fq 文件含有N碱基的reads个数
cat reads_1.fq | paste - - - - | cut -f2 | grep N | wc
awk '{if(NR%4==2) print}' reads_1.fq | grep N | wc
#7) 统计文件中reads_1.fq文件里面的序列的碱基总数
cat reads_1.fq | paste - - - - | cut -f2 | grep -o [ATGCN] | wc
cat reads_1.fq | paste - - - - | cut -f2 | grep -o [ATGCN] | sort | uniq -c
#8)计算reads_1.fq 所有的reads中N碱基的总数
cat reads_1.fq | paste - - - - | cut -f2 | grep -o N | wc
#9)统计reads_1.fq 中测序碱基质量值恰好为Q20的个数
cat reads_1.fq | paste - - - - | cut -f4 | grep -o 5 | wc
# 考虑碱基质量与对应的ASCII字符,Q值
#10)统计reads_1.fq 中测序碱基质量值恰好为Q30的个数
cat reads_1.fq | paste - - - - | cut -f4 | grep -o ? | wc
#11)统计reads_1.fq 中所有序列的第一位碱基的ATCGNatcg分布情况
cat reads_1.fq | paste - - - - | cut -f2 | cut -c1| sort | uniq -c
awk '{if(NR%4==2)print}' reads_1.fq | cut -c1 |sort|uniq -c
#12)将reads_1.fq 转为reads_1.fa文件(即将fastq转化为fasta)
cat reads_1.fq | paste - - - - | cut -f1,2|tr '\t' '\n'|tr '@' '>' > reads_1.fa
#13) 统计上述reads_1.fa文件中共有多少条序列
wc reads_1.fa
awk '{if(NR%2==0) print}' reads_1.fa | wc
#14)计算reads_1.fa文件中总的碱基序列的GC数量
awk '{if(NR%2==0) print}' reads_1.fa | grep -o [GC] | sort | uniq -c
#15)删除 reads_1.fa文件中的每条序列的N碱基
awk '{if(NR%2==0) print}' reads_1.fa | tr -d N
#16)删除 reads_1.fa文件中的含有N碱基的序列
cat reads_1.fa | paste - - |grep -v N | tr '\t' '\n'
#17) 删除 reads_1.fa文件中的短于65bp的序列
cat reads_1.fa |paste - -|awk '{if(length($2)>65) print}'| tr '\t' '\n'
cat reads_1.fa |paste - -|awk '{if(length($2)>65) print}' | wc
#18) 删除 reads_1.fa文件每条序列的前后五个碱基
cat reads_1.fa | paste - - | cut -f2|cut -c 5-
# 上面是前5个,后5个怎么删除???
#19)删除 reads_1.fa文件中的长于125bp的序列
cat reads_1.fa |paste - -|awk '{if(length($2)<125) print}'| tr '\t' '\n'
#20)查看reads_1.fq 中每条序列的第一位碱基的质量值的平均值
cat reads_1.fq | awk '{if(NR%4==0) print}' | cut -c1 |sort |uniq -c
感谢Jimmy老师,以及生信技能树的资源!!!