Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254639
  • 博文数量: 44
  • 博客积分: 1052
  • 博客等级: 少尉
  • 技术积分: 742
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 16:51
文章分类

全部博文(44)

文章存档

2013年(7)

2012年(14)

2011年(23)

分类: LINUX

2012-11-17 17:15:38

参考grep的man手册,记录grep命令的常用操作。

grep中正则表达式的语法基本与其他地方的正则表达式基本相同。 红字标出的是可能常用的选项。

感觉能经常用到的也就是:
-o
-R 
-n
-v

-r选项后可加--include=PATTERN。这东西十分有用,比如想查找函数的原型就用--include=*.h,想查找函数的实现就用--include=*.c。

1:语法
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]

2:选项
-A NUM:    输出匹配行的后NUM行。
-a          将二进制文件当成文本文件处理
-B NUM:     输出匹配行的前NUM行。
-C NUM:     输出匹配行的前NUM行和后NUM行
-b          输出字节偏移量
-c          输出匹配的行数
-e PATTERN  使用PATTERN为模式
-E          将PATTERN解释为扩展的正则表达式
-F
-P          将PATTERN作为perl正则表达式解释
-f FILE     从指定文件中读取PATTERN
-i          忽略大小写
--mmap      用mmap来读取输入
-n          添加行号
-q          安静模式,不输出匹配结果,如果仅需要判断是否有匹配可用该参数
-o          仅返回匹配的部分
-r -R       递归模式,
            --include=PATTERN   : 仅搜索匹配PATTERN的文件,如grep function * -r --include=*.c 
                                  仅搜索.c文件
            --exclude=PATTERN   :不搜索匹配PATTERN的文件
-v          反转模式,返回不匹配的行

正则表达式:
grep中的正则表达式分为基本的和扩展的,加上-E后使用扩展的正则表达式语法。
[]表达式:匹配任何在[]中出现的字符,若包含^,则匹配没有在[]中出现的字符。
          例如[0123456789]匹配任何单个数字,也可用[0-9]来表示这些数字
          常用类别
          [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:],
          [:punct:], [:space:], [:upper:], [:xdigit:]
.       : 匹配任何单个字符
^       : 匹配行的开头  grep ^one file
$       : 匹配行的末尾  grep one$ file
\<      : 匹配单词的开头
\>      : 匹配单词的结尾

?      :前一个item是可选的,并且最多匹配一次
*       :前一个item可匹配0次或多次
+       :前一个item可匹配1次或多次
{n}     :前一个item匹配n次
{n,}    :前一个item匹配>=n次
{n,m}   :前一个item匹配最少n次,最多m次

|       :匹配两个正则表达式中的任意一个

在基本的正则表达式中?, +, {, |, (, )没有特殊意义,要使用它们的特定意义需在前面加上\



阅读(1262) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~