`
fyzjhh
  • 浏览: 16317 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

grep 命令

阅读更多
Grep命令选项

-?

    同时显示匹配行上下的?行,如: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的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

$ ls -l | grep '^a'

    通过管道过滤ls -l输出的内容,只显示以a开头的行。
$ grep 'test' d*

    显示所有以d开头的文件中包含test的行。
$ grep 'test' aa bb cc

    显示在aa,bb,cc文件中匹配test的行。
$ grep '[a-z]\{5\}' aa

    显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$ grep 'w\(es\)t.*\1' aa

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

相关推荐

Global site tag (gtag.js) - Google Analytics