本文给大家分享一些实用的one-liners命令,如果觉得实用欢迎收藏与转发。 基本的awk命令提取一个文本中第2,4,和5行。 awk '{print $2,$4,$5}' input.txt 提取第五列中等于0的所有行: awk '$5 == '0'' file.txt 提取第五列中不等于0的所有行: awk '$5 != '0'' file.txt 根据第二列的字符串来提取unique的文本内容,即去重(只提取第一个unique字符串的那一行) awk '!arr[$2]++' file.txt 提取出第三列大于第五列的行数: awk '$3>$5' file.txt 求第一列的和: awk '{sum+=$1} END {print sum}' file.txt 求第二列数值的平均值, awk '{x+=$2}END{print x/NR}' file.txt 基本的sed命令把文件中所有的 sed 's/foo/bar/g' file.txt 去除文件中开头的空格或者tab字符: sed 's/^[ \t]*//' file.txt 去除文件中结尾的空格或者tab字符: sed 's/[ \t]*$//' file.txt 同时去除文件开头与结尾的空格或者tab字符: sed 's/^[ \t]*//;s/[ \t]*$//' file.txt 删除文本中的空白行 sed '/^$/d' file.txt 删除文件中行中包含abc的行及其这行以后的所有行: sed -n '/abc/,$!p' file.txt 生物信息中的awk和sed提取file.txt中 Chr1 中1MB和2MB的片段之间的行信息,假设第一列是Chr信息,第三列是位置信息: cat file.txt | awk '$1=='1'' | awk '$3>=1000000' | awk '$3<> 统计fastq文件中基本的参数,包括总的reads数目,总的unique reads的数目(就是不重复的reads),这些unique reads的比例,最过剩的read的序列及其数目与占总的reads的比率: at myfile.fq | awk '((NR-2)%4==0){read=$1;total++;count[read]++}END{for(read in count){if(!max||count[read]>max) {max=count[read];maxRead=read};if(count[read]==1){unique++}};print total,unique,unique*100/total,maxRead,count[maxRead],count[maxRead]*100/total}' 将bam格式的文件转化为fastq格式: samtools view file.bam | awk 'BEGIN {FS='\t'} {print '@' $1 '\n' $10 '\n+\n' $11}' > file.fq 将一个multi-FASTA 分成多个的单个FASTA文件: awk '/^>/{s=++d'.fa'} {print > s}' multi.fa 将fastq文件转变成fa文件: sed -n '1~4s/^@/>/p;2~4p' file.fq > file.fa 输出fasta文件中每一个序列的header名字与其的长度 cat file.fa | awk '$0 ~ '>' {print c; c=0;printf substr($0,2,100) '\t'; } $0 !~ '>' {c+=length($0);} END { print c; }' 输出制定的行数: #例如20到80行 转化 VCF file 成BED file: sed -e 's/chr//' file.vcf | awk '{OFS='\t'; if (!/^#/){print $1,$2-1,$2,$4'/'$5,'+'}}' 计算vcf 中 每一个line的missing样本数目: bcftools query -f '[%GT\t]\n' a.bcf | awk '{miss=0};{for (x=1; x<>$x=='./.') {miss+=1}};{print miss}' > nmiss.count 根据reads的名字,提取fastq中的reads: zcat a.fastq.gz | awk 'BEGIN{RS='@';FS='\n'}; $1~/readsName/{print $2; exit}' 计算fastq文件中reads 长度的平均值: awk 'NR%4==2{sum+=length($0)}END{print sum/(NR/4)}' input.fastq 本次主要讲sed 和 awk 两大神器,下周会更新其他实用的one-liners command,希望对大家有帮助,如果大家也有其他实用的one-liners command也欢迎大家在回复栏中分享你收藏的command。 |
|