linux下grep文件内容搜索工具及基本正则表达式详解

grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本,

        并将符合模式的文本行显示出来。

    格式:grep [选项] 匹配条件 文本名称

选项:  -i:  忽略大小写

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

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

    --color: 搜索出来文件高亮度显示

       -A: 匹配指定行的下几行

       -B: 匹配指定行的上几行

       -C: 匹配指定行的上下几行

       -E: 扩展正则表达式 相当于egrep 

正则表达式:Regular Expression, 简称REGEXP

 注意:\是脱义符,防止与bash冲突,脱去其原有的意思

 元字符

    .: 匹配任意单个字符

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

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

例如:特殊字符集合:[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:],                   [:alnum:]

 匹配次数

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

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

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

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

    例如:\{1,\} 表示:前面字符至少匹配1次,最多不限

       \{0,6\} 表示: 前面字符至少匹配0次,最多6次

    举例说明:显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行

         grep '^[[:space:]\{1,\}]' /boot/grub/grub.conf

wKioL1cMZlLSoomsAAEbKVUgbo8919.jpg

 位置锁定或叫锚定

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

       举例说明:显示/etc/passwd文件中r开头的行

         grep '^r' /etc/passwd

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

       举例说明:显示/etc/passwd文件中bash结尾的行

         grep 'bash$' /etc/passwd

   ^$: 表示 空白行

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

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

    举例说明:显示/etc/passwd文件中以root开头并以root词结尾的行

      grep '^root\>' /etc/passwd

       wKioL1cMZ6aARz1JAACg2ippFjs572.jpg

 分组:\(\)

   例如:\(mn\)* 表示匹配任意mn组合字符

   后向引用

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

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

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

举例说明:显示/etc/inittab文件中以一数字开头同时以一个与开头相同数字结尾的行

            grep '^\([0-9]\).*\1$' /etc/inittab

          wKioL1cMZSfTaWFLAAGt40dQEFU507.jpg