查看原文
其他

生物信息之独孤九剑——sed

2016-09-07 令狐冲 基因学苑


编者按:

  在金庸武学体系的众多武功之中,独孤九剑并不是最强劲的武功,它与其他武林绝学有很大的不同,可以说是鹤立鸡群。比如乔峰的降龙十八掌,段誉的六脉神剑,张无忌的九阳神功,石破天的罗汉伏魔神功,这些神功都需要强大的内力支撑,而独孤九剑则不同,不需要内力,这点其实可以从华山派气宗与剑宗的分歧就可以看出来。独孤九剑传人风清扬属于剑宗,更注重招式,而不是像剑宗注重练气。独孤九剑分为总诀式,破剑式,破刀式,破枪式,破鞭式,破索式,破箭式,破掌式,破气式,遇到不同的场景使用关不同的招式,因此,独孤九剑更加注重问题的解决,本质上就是就是通过工具来解决问题。只要学会这九剑,就可以处理很多的问题。学习生物信息也是同样的道理,当然练好内功,掌握很好的基础是非常必要的,但是也可以学习一些小工具,解决一些实际问题。那么从这次内容开始,我们就来给大家介绍生物信息之独孤九剑。


sed是linux下强大的文本编辑工具,sed全称是Stream EDitor,是一种流编辑器,什么是流编辑器呢。也就是相当于一个格式化的工具。当数据流过这个工具时,都被格式化成固定的格式。比如一个流水线中的一个模具,原材料是各种形状的,但是结果模具处理之后都变成同一的形状,这就是流编辑器。sed默认一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。原文件内容并没有改变。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作。而不需要编写转换程序来完成。


案例一:输出固定的行

sed -n '1307p'  seq.fna   #输出文件第1307行;


sed -n '100,200' seq.fna  #输出文件第100到200行;


案例二:替换操作

sed -e 's/gi/GI/' seq.fna  #将文件中gi全部替换为大写GI;

sed -i 's/gi/GI/g' seq.fna   #在原文件上进行替换,并且进行全部替换;

sed -i.bak 's#GI#gi#' seq.fna  #在原文件上进行替换,并进行备份;

sed -e 's/gi/GI/2;s/ref/REF/2' seq.fna   #只将第二次出现的gi和ref进行替换;

sed -f sed.list cds.list    #根据文件中的模式进行替换,可同时进行多条件替换;

sed -n 's/gi/GI/p' seq.fna  #打印发生替换的行;


案例三:删除空白行;

sed -e '/^\s*$/d'  seq.fna  #删除文件中的空白行;


案例四:行寻址

sed -n '/ref/p' seq.fna   #输出文件中包含ref关键字的行;



sed  '100,2000s/GI/gi/g' seq.fa  #则只替换100行到2000行的内容;

sed  '100,2000!s/GI/gi/g' seq.fa  #加感叹号取反,在这个范围之外的执行操作;


案例五:删除操作

sed -e '/>/d' seq.fna #删除包含ref的行;

sed -e 's/:.*//g' seq.fna   #删除冒号之后的所有内容;


案例六:对应替换,类似于tr的功能

sed -e 'y/ATCG/atcg/' seq.fna  #修改大小写


sed -e '/>/!y/ATCG/atcg/' seq.fna  #DNA序列反向互补配对,并修改大小写



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存