一、grep

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

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

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

      2.1 常用选项详解

            2.1.1 单文件查找:

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

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

                   0RJF}8B}VEGJP@9F3H4K0WF

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

                   X{P_NIW65WXOH7D(A[[C_P3

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

                   image

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

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

           2.1.2 多文件查找

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

                   {%1`EFBLY7DCQK7XD7CAX~6

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

                  18CJ_@QW(63MB$H)TZG8}XC

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

                  1E](]I(J2OE1~Z9LXJ]ER}2

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

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

          2.2.1 基本正则表达式

               ?字符匹配

                     “.”:任意的单个字符

                         W}U@ZSAER]YB_C@[]QLC}6X

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

                         T0PNB{WW@~CVS@1~I(4GZLX

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

                        F0G_UD{XOB)YZV[3L]U1ZMM

                 

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

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

                       @7Z7K]L@}4$1[8$5%P]EH]S

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

                       (~6U56NPUL(62JS_PG3DE_G

 

                 ?位置锚定

                      ^:锚定行首

                          194RXO$(`I2I3CZOK(X%4PO

                      $:锚定行尾

                         JSPVEAFD)BO`6S81[~5MF4X

                     ^$:匹配空白行

            

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

                       \<String:锚定词首

                        T21ER`4@D`U)[~TN}2`O6%F

                     String\>:锚定词尾

                       V(N%_2GG7E9DX1)NO2%{X[B

                       \<String\>:全词匹配

                      04RNL{5@R~@}E2Z%O}I~A)F

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

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

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

                     ~J1[FYFL@@4{5E(AVSUKHEX

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

                     3AY}0)5E(%UOO(36GRUZUBD 

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

                    GF5$$$)KW]}8D_MN(MUZX}X

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

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

                               {3} 只匹配3次

 

二、egrep

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

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

8)4IU4TP6_Z{M_4O79$9]81

 

 

三、fgrep

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

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

Q90C{IGRKJSHG)UM78I3SE5