Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1437985
  • 博文数量: 704
  • 博客积分: 10140
  • 博客等级: 上将
  • 技术积分: 6230
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-15 20:41
文章分类

全部博文(704)

文章存档

2013年(1)

2012年(16)

2011年(536)

2010年(151)

分类:

2011-10-26 21:39:48

原文地址:Linux grep 作者:china_wang_sir

grep 是一个Linux system常见一个正则命令。
 
作用:过滤数据。
 
下面我以marc.wang文件举例。
 
tmp]# cat -n marc.wang
     1  "Open Source" is a good mechanism to develop programs.
     2  apple is my favorite food.
     3  Football game is not use feet only.
     4  this dress doesn't fit me.
     5  However, this dress is about $ 3183 dollars.
     6  GNU is free air not free beer.
     7  Her hair is very beauty.
     8  I can't finish the test.
     9  Oh! The soup taste good.
    10  motorcycle is cheap than car.
    11  This window is clear
    12  the symbol '*' is represented as start.
    13  Oh!     My god!
    14  The gd software is a library for drafting programs.
    15  You are the best is mean you are the no. 1.
    16  The world is the same with "glad".
    17  I like dog.
    18  google is the best tools for search keyword.
    19  goooooogle yes!
    20  go! go! Let's go.
    21  # I am VBird
    22  goooog
 
 
 -v 取反
 
如 : 过滤不包涵google这个字符的数据
由此可见,最后没有了,这就是-v 的作用,例子举多了,原理我们就明白了。
 
-n   标记文件的行号
 
这里我要说下,linux 文件里有空行 grep -n 也会把他当作一行来看。不会以空来看。
 
-i 忽略大小写
明显看到food 个 Foot 都被过滤出来啦。
 
-r 递归过滤,一般用在过滤一个数据不知道在哪个文件里。而且也不知道哪个目录。
 
参数先介绍到这里。
 
下面是特殊的符号
 
^ 以XXX开头  . 这个点代表任意字符  $ 以XXX结尾   * 循环前一个,例:1* 系统会把1看做一个空的字符,并不是1XXXXXXXX的数据,要想1XXXXX的数据,必须这样写。1.* 注意千万别跟bash的*搞混。
 
我来举个例:过滤已g 开头后面的,已g结尾,中间不管有多少数据。
 
\ 因为正则里的 . * ^ $ 等特殊字符都有一定的作用,如果我想过滤已^开头的呢?\^ 反斜杠就会把他当成一个字符来看待。并不会去匹配。。
 
例:过滤 不是以.结尾的数据。
 
 
 
 
{}:  条件符, 格式: XXX\{XXXXXX\} filename  
 
例:过滤 们要找出 g 后面接 2 到 5 个 o ,然后再接一个 g 癿字符串
阅读(322) | 评论(0) | 转发(0) |
0

上一篇:【Linux】du命令用法详解

下一篇:libxml学习

给主人留下些什么吧!~~