一.grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。


二.格式

   grep [options] ‘PATTERN' file,.....

三.[options]主要参数:

  -v:显示不能被模式所匹配到的行。

  —o:仅显示被模式匹配到的字串,而非整个行。

  —i:不区分字符大小写。

  —E:支持扩展的正则表达式。

  -c:只输出匹配行的计数。

  -h:查询多文件时不显示文件名。

  -l:查询多文件时只输出包含匹配字符的文件名。

  —E:等于egrep,跟egrep的应用形式一样。

  -n:显示匹配行及 行号。

  -s:不显示不存在或无匹配文本的错误信息。

四.PATTENR正则表达式的主要参数。是通过一些特殊字符的排列,用以搜索、替换、删除一行或多           行字符串。正则表达式并不是工具程序,而是一个字符串处理的标准依据。

  1.字符的匹配:

   .:指匹配任意单个字符

     例:grep "a.b"  匹配a和b中间是任意单个字符的行。如abb,acb,azb....等等。

   []:指定范围内的任意单个字符

    [0-9][[:digit:]]:0-9之间的任意数字。

    [a-z][[:lower:]]:所有的小写字母。

    [A-Z][[:upper:]]:所有的大写字母。

    [[:space:]]:空白字符。

    [[:punct:]]:标点符号。

    [[:alnum:]]:字母和数字。

    [[:alpha:]]:a-zA-z

      例:grep "[0-9]." 匹配包含前面是0-9后面是任意字符的行。

    [^]:指定范围外的任意单个字符。

   2.次数匹配

    *:指任意次。

      例:grep "x*y" 指前面的x可以出现任意次。如xxy,xxxy,xxxxxxy...

    \?:0次或1次。

      例: grep "x\?y" 前面的x能出现为次或一次。如xy ,y,xxy

     \{m\}匹配m次,\{m,n\}至少m次,最多n次,\{m,\}至少m次,\{0,n\}最多匹配n次

      例:grep "abc\{1,2\}" 指前面的c字符最少出现一次,最多出现两次。如ab,abc,abcc.

    3.位置锚定:用于指定字符出现的位置。

     ^:指锚定行首,$:指锚定行尾,^$:两个组合使用指空白行。

      例:grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}"指以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行。

    4.分组和引用

     \(\)\1向后引用前面的第一个左括号以及与之对应的右括号中的模式的匹配到的内容。

      例:grep "\(ab\)xy\1" 匹配到的字符是abxyab.


五:egrep: 使用扩展正则表达来构建模式,相当于grep -E ,匹配模式和grep基本上差不多,只是在次数匹配上有差异,次数匹配上不用加"\"。

     1:字符匹配:

.: 任意单个字符

[]: 指定范围内的任意单个字符

[^]: 指定范围外的任意单个字符

     2:次数匹配:

*:匹配其前面的字符任意次;

?: 匹配其前面的字符0或1次;

+: 匹配其前面的字符至少1次

{m}: 匹配其前面的字符m次;

{m,n}: 至少m次,至多n次

{m,}: 至少m次;

{0,n}:至多n次;

     3:锚定:

^: 行首

$: 行尾

\<, \b: 词首

\>, \b:词尾

      4:分组:

(): 分组


      5 或者

       |: 如:abcd|defg这里指的是abcd或defg字符串而不是单个字符。