grep及正则表达式

Posted it芮菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep及正则表达式相关的知识,希望对你有一定的参考价值。

文本查找的需要:grep,egrep,fgrep

grep(Global Research):根据模式,搜索文本,并将符合模式的文本行显示出来。

Pattern:文本字符和正则表达式的元字符组合而成的匹配条件

grep [OPTIONS] PATTERN [FILE...]

       -i:忽略字符大小写

       --color:把匹配到的字符用高亮颜色显示出来,因为加上--color用起来会方便很多,所以用alias给grep取个别名alias grep=\'grep --color\'

       -v:显示没有被模式匹配到的行

       -o:只显示被模式匹配到的字符串

 

正则表达式:regular expression,REGEXP

正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

元字符:

.:匹配任意单个字符

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

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

字符集合:[:digit:],[:lower:],[:upper:],[:punct:],[:space:],[:alpha:],[:alnum:]

 

匹配次数(贪婪模式,即尽可能长的去匹配):

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

        eg这些个字符串里a,b,ab,aab,acb,adb,amnb哪个能满足a*b

            b:b前面的a出现0次

            aab:b前面的a出现2次

.*:任意长度的任意字符

     eg:a.*b:以a开头b结尾的字符串

\\(此处\\是用来转义的)?:匹配其前面的字符1次或0次

\\{m,n\\}:匹配其前面的字符至少m次,至多n次

    eg\\{1,\\}:匹配其前面的字符至少一次

 

位置锁定:

^:锚定行首,此字符后面的任意内容必须出现在行首

$:锚定行尾,此字符后面的任意内容必须出现在行尾

^$:空白行

\\<或\\b:锚定词首,其后面的任意字符必须作为单词首部出现

\\>或\\b:锚定词尾,其前面的任意字符必须作为单词尾部出现

!!!注意:两个\\b的作用不同表现形式为一个放在锚定词前一个放在锚定词尾

 

分组:

\\(\\)

    \\(ab\\)*

   后向引用 

   \\1:引用第一个左括号以及与之对应的右括号所包括的所有内容

   \\2:引用第一个左括号以及与之对应的右括号所包括的所有内容

   \\3:引用第一个左括号以及与之对应的右括号所包括的所有内容

 

fgrep:不支持正则表达式,执行速度快

 

 

例子:

grep(Global Research):根据模式,搜索文本,并将符合模式的文本行显示出来

1、

     

    查找/etc/passwd中有root的行并显示出来

2、grep --color:把匹配到的字符用高亮颜色显示出来

     

     因为加上--color用起来会方便很多,所以通常用alias给grep取个别名alias grep=\'grep --color\'

     

正则表达式:regular expression,REGEXP

   位置锁定:

     (1)^:锚定行首,此字符后面的任意内容必须出现在行首

                

      (2)$:锚定行尾,此字符后面的任意内容必须出现在行尾

              显示以数字结尾的行

              

         (3)\\>或\\b:锚定词尾,其前面的任意字符必须作为单词尾部出现

                  

             

 

以上是关于grep及正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

grep及扩展正则表达式

grep及正则表达式

grep及正则表达式

关于 grep及正则表达式

grep命令及正则表达式

grep文本查看工具及正则表达式