查看原文
其他

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

2016-09-01 基因学苑


编者按:

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


grep是Linux下非常重要的一个工具,grep全称是Global Regular Expression Print,表示全局正则表达式版本。grep是一个文本筛选器,其实也是搜索的功能,grep的工作原理是,给定一个条件,我们也叫作模式,然后从文本中筛选出符合这个条件的内容,然后将这一行输出出来。有点类似于搜索引擎,在一个很大的文本中,筛选出满足设定条件的部分。grep在生物信息分析中,可以快速从文本中筛选出需要的内容。

首先来介绍一下grep的选项参数,grep的选项参数也很多,主要分为四部分,首先是正则表达式相关的选项,然后是Miscellaneous,其余方面,输出控制,以及上下文控制等。

-E或--extended-regexp   扩展功能的grep,也叫作egrep,可以直接敲egrep命令。

-F或--fixed-regexp   将范本样式视为固定字符串的列表,也叫作fgrep,可以直接敲fgrep命令。 

-G或--basic-regexp  将范本样式视为普通的表示法来使用。

-P 或--perl-regexp 使用perl的正则表达式。

不同模式的正则表达式之间稍微有些差别。

-f --file=接一个模式的文件,让grep查找符合范本条件的文件内容,格式为每列一个范本样式;当要搜索条件过多时,可以将条件写入一个文件。

-i或--ignore-case   忽略字符大小写的差别。 

-w或--word-regexp   只显示全字符合的列。

-x或--line-regexp   只显示全列符合的列。

再来看一下输出选项,

-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

-H 在显示符合范本样式的那一列之前,表示该列所属的文件名称。

-l  列出满足条件的文件名称,而不是具体内容,这个用在文件很多时,筛选出哪些文件包含条件的内容。然后将这些文件筛选出来。

这其中有几个选项是非常重要的。

首先是-v,--revert-match ,显示不匹配模式的行,有时候我们需要输出哪些是不满足条件的行,这时就可以使用-v选项。

-n 是在输出满足条件的内容前加行行号。

-r 和-d类似,用于搜索目录,可以用于搜索目录下的每一个文件;

下面来看一下上下文控制。

-B 是before的意思,后面接一个数字,表示将满足条件的行,前面几行也输出出来。

-A 是After的意思,和-B类似,表示将满足条件的行,下面几行输出出来。

 -C 后面接一个数字, 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 也可以不用-C,直接连字符接数字。比如-2

输出满足条件的上下几行。

-c或--count   计算符合范本样式的列数。

案例一:统计fasta文件中序列的条数;


案例二:输出满足条件的序列;

这里有一个lastz比对的axt格式文件,这种格式第一列是比对的统计,下面两列是参考序列和待查序列的序列。我们可以使用grep搜索某个序列是否比对上了,加-l选项,则判断出是否比对上,而不列出具体的内容。-n或列出来满足条件的行号。因为这个一次输出满足条件的行,序列在下面两行,这个时候可以添加-A 2,这样就把一个比对的内容全部显示出来了。


案例三:筛选出不满足条件的内容;

grep不仅可以用于文件中筛选,同样可以用于很多命令屏幕输出结果的筛选中。比如ll,ps等。

敲ps -fx 然后使用管道,grep -v “S",不输出进程状态为S的任务。


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

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