简介:

grep:使用基本正则表达式定义的模式来过滤文本的命令,并将符合模式的文本行显示出来。grep(Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep(fgrep:不支持正则表达式 没有元字符时可使用此命令快速查找)。

格式:grep [OPTIONS] PATTERN [FILE...]

主要参数:

  -i, --ignore-case忽略大小写

  -color[=WHEN], --colour[=WHEN]加颜色

    #alias grep='gerp --color'

  -v, --invert-match显示没有被模式匹配到的行

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

  -E:使用扩展正则表达式

  -A #:显示的匹配后面#行

    # grep --color -A 2 '^fpu' /proc/cpuinfo 

  -B #:显示的匹配前面#行

  -C #:显示的匹配前后面#行

grep文本搜索工具

正则表达式:REGular EXPression,REGEXP

元字符:

.:匹配任意单个字符

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

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

 字符集合:  

   [:space:]空白字符(新行,空格,制表符)

   [:punct:]标点符号

   [:lower:]小写字母

   [:upper:]大写字母

   [:alpha:]大小写字母

   [:digit:]数字

   [:alnum:]数字和大小写字母

   [:graph:]非空字符(非空格,控制字符)

   [:print:]非字符(包括空格) 

   [:cntrl:]控制字符

   [:xdigit:]十六进制数字(0-9,a-f,A-F)

  

     #grep '[[:digit:]]&' /etc/inittab

     

  

匹配次数(贪婪模式:尽可能多的匹配)

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

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

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

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


位置锚定

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

  #grep '^r..' /etc/passwd

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

  #grep 'b..h$' /etc/passwd

^$:空白行  

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

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

  #grep "root\>" test.txt

  #grep "\<root" test.txt

  #grep "\<root\>" test.txt

    

分组:

\(\)

\1,\2,\3,...

  \(ab\)*

  后向引用

  \1:引用第一个左括号