一、grep

    1.用途:文本搜索工具,根据用户指定的文本模式(patten)对目标文件进行逐行搜索,显示能够被模式匹配的行内容。

    2.命令使用格式: grep [option] ' PATTEN ’files…

       ※注意:如果模板包括空格,则必须被引用(双引号或者单引号)。

      2.1 常用选项详解

            2.1.1 单文件查找:

              -n:显示匹配行的行号(为了显示清楚匹配行,下面的都用n+其他选项)

              -v :反向匹配(即显示非匹配行) –> 常用于过滤掉一些无关的信息,增加显示信息的可读性。

                   文本搜索工具grep,egrep,fgrep的区别_用户

               -o:只显示行中被模式所匹配的字符串,而非整行。

                   文本搜索工具grep,egrep,fgrep的区别_files_02

               -i:不区分字符的大小写。

                   文本搜索工具grep,egrep,fgrep的区别_用户_03

               -E:支持扩展的正则表达式。(这里暂时不表,到下面说正则表达式的时候一起说)<=> egrep

               -F:搜索字符串。即PATTEN部分若使用元字符,也不被理解成正则表达式,而是单纯解析为字符串来做匹配。 <=> fgrep

           2.1.2 多文件查找

                多文件查找时,如果没有任何选项,在找到匹配行后,默认会显示匹配行对应的文件。

                   文本搜索工具grep,egrep,fgrep的区别_files_04

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

                  文本搜索工具grep,egrep,fgrep的区别_files_05

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

                  文本搜索工具grep,egrep,fgrep的区别_用户_06

     2.2 文本模式详解(正则表达式)

          前面所列的例子中,搜索的文本都是用字符串,当然我们也可以用正则表达式来搜索。

          2.2.1 基本正则表达式

               ?字符匹配

                     “.”:任意的单个字符

                         文本搜索工具grep,egrep,fgrep的区别_files_07

                       [  ] : 指定范围内的单个字符。如:[a]即查找单个a字符

                         文本搜索工具grep,egrep,fgrep的区别_用户_08

                       [^  ]:指定范围外的单个字符。如:[^a]即查找a以外的单个字符

                        文本搜索工具grep,egrep,fgrep的区别_用户_09

                 

               ?次数匹配(*):用来与前一个字符的零次或者多次重复出现相匹配。

                   ※这里必须要明白正则里的*和通配符*完全不一样。

                       文本搜索工具grep,egrep,fgrep的区别_用户_10

                    “.*":用来匹配任意长度的任意字符。(这个有点类似于通配符*)

                       文本搜索工具grep,egrep,fgrep的区别_files_11

 

                 ?位置锚定

                      ^:锚定行首

                          文本搜索工具grep,egrep,fgrep的区别_files_12

                      $:锚定行尾

                         文本搜索工具grep,egrep,fgrep的区别_用户_13

                     ^$:匹配空白行

            

                 ?单词锚定(好像必须加"")

                       \<String:锚定词首

                        文本搜索工具grep,egrep,fgrep的区别_files_14

                     String\>:锚定词尾

                       文本搜索工具grep,egrep,fgrep的区别_files_15

                       \<String\>:全词匹配

                      文本搜索工具grep,egrep,fgrep的区别_files_16

          2.2.2 扩展的正则表达式(需要用 –E 选项)

                     ※也可以不使用-E选项,但是各字符前需要加上\

                  ?: 匹配?前面的字符可以出现0次或者1次。不会匹配大于1次的该字符

                     文本搜索工具grep,egrep,fgrep的区别_files_17

                  +:匹配+前面的字符可以出现1次或者多次。不会匹配没有出现的该字符

                     文本搜索工具grep,egrep,fgrep的区别_files_18 

                 |: 可以使用多个表达式来匹配 expr1|expr2

                    文本搜索工具grep,egrep,fgrep的区别_files_19

                {}:与?和+类似,但是这里可以指定匹配次数。

                       如:{1,2} 匹配1~2次

                               {3} 只匹配3次

 

二、egrep

egrep是grep的扩展,可以理解为和grep -E相同。

以下的三种用法都能得到相同的结果。

文本搜索工具grep,egrep,fgrep的区别_用户_20

 

 

三、fgrep

为文件搜索文字字符串,即正则表达式中的元字符表示回其自身的字面意义,

不再作为元字符使用。可以理解成和grep -F相同。

文本搜索工具grep,egrep,fgrep的区别_用户_21