生信小技巧:实用的one-liners命令(1)

当你处理NGS文本信息时,相信你不多不少也有遇到过类似的烦恼,例如不知道如何只提取gene ID的名字,或者只提取gff file中某一列的某一行,又或者想自己在每一行中添加一些你想要的信息。这时候如果你会编程,写一个脚本,这都不是什么问题。当然如果你编程不是很过关,掌握一些实用的one-liners命令,往往会事半功倍,帮助你实现一些简单的文本操作。

本文给大家分享一些实用的one-liners命令,如果觉得实用欢迎收藏与转发。

基本的awk命令

提取一个文本中第2,4,和5列。

awk '{print $2,$4,$5}' input.txt
#对比cut,awk会相对更加好用。

提取第五列中等于0的所有列:

awk '$5 == "0"' file.txt

提取第五列中不等于0的所有列:

awk '$5 != "0"' file.txt

根据第二列的字符串来提取unique的文本内容,即去重(只提取第一个unique字符串的那一行)

awk '!arr[$2]++' file.txt
#类似sort -u,不过 可以精准到你想以那一行的字符串来进行去重复

提取出第三列大于第五列的行数:

awk '$3>$5' file.txt

##当然也可以提取出大于每个值得行,可以用于提取大于某个长度的gene的那一行。
awk '$3> 500' file.txt

求第一列的和:

awk '{sum+=$1} END {print sum}' file.txt
#可用于计算基因长度的总和等

求第二列数值的平均值,

awk '{x+=$2}END{print x/NR}' file.txt
#可以用来求基因长度平均值

基本的sed命令

把文件中所有的foo
替代成bar

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<=2000000'

统计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}'
#拿到raw data来统计时候很实用

将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行
awk 'NR>=20&&NR<=80' input.txt

转化 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<=NF; x++) if ($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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容