Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162800
  • 博文数量: 24
  • 博客积分: 1575
  • 博客等级: 上尉
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-28 22:51
文章分类

全部博文(24)

文章存档

2016年(1)

2013年(1)

2012年(5)

2011年(9)

2010年(2)

2009年(5)

2008年(1)

我的朋友

分类: LINUX

2009-01-04 17:12:58

功能:在多文件里查找指定的字符串或者指定的匹配模式。其扩展有egrepfgrepegrepgrep的扩展,支持更多的re元字符, fgrep就是fixed grepfast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G-E-F命令行选项来使用egrepfgrep的功能。

参数:

-?

同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。

-b--byte-offset

打印匹配行前面打印该行所在的块号码。

-c,--count

只打印匹配的行数,不显示匹配的内容。

-f File--file=File

从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。

-h--no-filename

当搜索多个文件时,不显示匹配文件名前缀。

-i--ignore-case

忽略大小写差别。

-q--quiet

取消显示,只返回退出状态。0则表示找到了匹配的行。

-l--files-with-matches

打印匹配模板的文件清单。

-L--files-without-match

打印不匹配模板的文件清单。

-n--line-number

在匹配的行前面打印行号。

-s--silent

不显示关于不存在或者无法读取文件的错误信息。

-v--revert-match

反检索,只显示不匹配的行。

-w--word-regexp

如果被\<\>引用,就把表达式做为一个单词搜索。

-V--version

显示软件版本信息。

实例:

要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

$grep 'kkk' ./*

搜索当前目录的含“kkk”字串的文件。 

$ ls -l | grep '^a'

通过管道过滤ls -l输出的内容,只显示以a开头的行。

$ grep 'test' d*

显示所有以d开头的文件中包含test的行。

$ grep 'test' aa bb cc

显示在aabbcc文件中匹配test的行。

$ grep '[a-z]\{5\}' aa

显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

$ grep 'w\(es\)t.*\1' aa

如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es\1),找到就显示该行。如果用egrepgrep -E,就不用"\"号进行转义,直接写成'w(es)t.*\1'就可以了。

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