民工的职业生涯
如果生命,没有遗憾,没有波浪……

呵呵,没有看linux之前就听几个好友说过很好用,今天用了才知道确实的用起来真的很不错。

首先,看看grep的两个方面:

定义

global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

工作原理

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

,以下是自己网上搜刮下来的:

   ^

  行的开始 如:'^grep'匹配所有以grep开始的行。如果是要匹配行中的以某个单词开头的可以考虑使用:'grep>\' *,

  $

  行的结尾 如:'grep$'匹配所有以grep结尾的行。 如果是要匹配行中的以某个单词结尾的可以考虑使用:'\<grep' *,

  .

    匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

    ?

  匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。

    +

  匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等

  *

  匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

  []

  匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。或者可以采用: grep [g]rep| [G]rep 

  [^]

  匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

  (..)

  标记匹配字符,如'(indentity)',indentity被标记为1。

  \< 和 \>

   分别标注单词的开始与结尾。如

   grep  * 会匹配 ‘Batman’、‘manic’、‘man’等,
   grep '\<man' * 匹配‘manic’和‘man’,但不是‘Batman’,
   grep '\<man\>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。  

  x{m}

  重复字符x,m次,如:'0{5}'匹配包含5个o的行。

  x{m,}

  重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。

  x{m,n}

  重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。

  w

  匹配文字和数字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

   W

  w的反置形式,匹配一个或多个非单词字符,如点号句号等.

   -n,--line-number

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

  -s,--silent

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

  -v,--revert-match

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

  -w,--word-regexp

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

  -V,--version

  显示软件版本信息。

   还有以下的部分:

   grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
   grep -l pattern files :只列出匹配的文件名, 
   grep -L pattern files :列出不匹配的文件名,
   grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

 

 

posted on 2007-11-13 22:35  sharmy  阅读(219)  评论(0编辑  收藏  举报