李雷廷的个人博客分享 http://blog.sciencenet.cn/u/llt001

博文

grep -c 用于过滤统计

已有 5830 次阅读 2015-10-22 09:03 |系统分类:科研笔记

在Linux操作系统下处理数据时,经常会遇到需要统计一下一个文件中有多个条基因序列,或多少个基因名称的情况。一般情况,最简单直接的方式是利用Linux自带的命令grep和wc来统计,比如统计一个FASTA文件中有多少条序列:

cat input.fasta | grep '>' | wc -l

或者统计一个文件中有多少个拟南芥的基因:

cat input.txt | grep AT | wc -l

这样的方式我用了若干年,最近发现其实还有更简单的方式,用grep -c命令,可以节省写管道和wc命令的时间

cat input.fasta | grep -c '>'

cat input.txt | grep -c AT

这种方式与前面的grep+wc组合效果是一样的,但是显得更高效,整洁。

grep命令来源于Unix,目前常用的版本是GNU grep和BSD grep,两者对-c参数的解释为

(GNU grep)-c, --count              

             Suppress normal output; instead print a count of matching lines for

             each input file.  With the -v,  --invert-match option (see below),

             count non-matching lines.  (-c is specified by POSIX.)

(BSD grep)-c, --count              

             Only a count of selected lines is written to standard output.

几十年的发展,使得grep命令积累了大量参数,而-c参数一直被忽略的主要原因就是参数太多,难以有耐心全部仔细看完,一般只对常用的几个参数比较熟悉:

-v 只输出匹配不上的行

-i 忽略大小写

-f 从文件中读取匹配模式,一行一个匹配模式

-A 输出匹配上的行后NUM行的内容

-B 输出匹配上的行前NUM行的内容

-l 只输出能匹配表达式的文件名,不输出内容

fgrep命令 把表达式看作单纯字符串,不做正则表达式解释,可以增加简单匹配的匹配速度

egrep命令 支持扩展规则的正则表达式


致谢:Insipired by Haibao Tang's code in GitHub



https://blog.sciencenet.cn/blog-656335-929973.html

上一篇:GitHub的Wiki是单独的repository
下一篇:集群服务器使用体验
收藏 IP: 218.2.227.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的精选博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-28 08:37

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部