五. 正则表达式grep, egrep, fgrep

时间:2021-11-13 18:45:45

grep,egrep,fgrep : print lines matching a pattern

1.grep :

  grep [options] PATTERN FILE...

  PATTERN由元字符和和普通字符组成

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

  -o : --only-matching, 只显示所匹配到的字符,二不是整行

  -n : --line-number, 输出所匹配行的行号

  -v : --invert-match, 显示除匹配行外的所有行

  -E : --extended-regexp, egrep

  -F : --fixed-strings, fgrep

  -P : --per-regexp

  -A NUM : --after-context, 显示匹配行后NUM行

  -B NUM: --before-context,显示匹配行强NUM行

  -C NUM: --context,显示匹配行前、后NUM行

  元字符

    匹配字符:

      . : 匹配任意单个字符

      [],[^] : 匹配指定的单个字符

        [0-9], [[:digit:]] : 匹配单个数字

        [[:alpha:]] : 匹配单个大、小写字母

        [[:lower:]] : 匹配单个小写字母

        [[:upper:]] : 匹配单个大写字母

        [[:alnum:]] : 匹配单个数字或字母

        [[:bank:]] : 匹配单个空白字符

        [[:punct:]] : 匹配标点符号

        [[:contrl:]] : 匹配当控制字符

        [[:xdigit:]] : 匹配单个16进制数

    匹配次数:用来指定前面的字符出现的次数

      * : 任意次数,包括0次

      \+ : 至少一次

      \? : 0次或1次,前面的字符可有,可无

      \{m\}, \{0,n\}, \{m,n\}, \{m,\} : 分别指m次,最多n次,m-n次,最少m次

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

    位置锚定:

      ^ : 行首锚定,模式左侧

      $ : 行尾锚定,模式右侧

      \< : 词首锚定,单词模式左侧,单词指由数字和字母构成的字符串

      \> : 词尾锚定,单词右侧

        ^PATTERN$, 匹配整行只有指定的模式

        ^$ : 空行

        ^[[:blank:]]$ : 整行无可见字符

        \<word\> : 匹配整个单词

    分组

      \(\) 将任意个字符用括号括起来做一个整体进行匹配

      后向引用:应用前面分组括号所匹配的内容,非模式本身, \1,\2 ...

        \(th\).*\1 : 匹配第一个括号所匹配的内容

    

2. egrep : 等同于 grep -E 

  egrep [options] PATTERN FILE...

  PATTERN由元字符和和普通字符组成

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

  -o : --only-matching, 只显示所匹配到的字符,二不是整行

  -n : --line-number, 输出所匹配行的行号

  -v : --invert-match, 显示除匹配行外的所有行

  -A NUM : --after-context, 显示匹配行后NUM行

  -B NUM: --before-context,显示匹配行强NUM行

  -C NUM: --context,显示匹配行前、后NUM行

  PATTERN由元字符和和普通字符组成

  元字符

    匹配字符:

      . : 匹配任意单个字符

      [],[^] : 匹配指定的单个字符

        [0-9], [[:digit:]] : 匹配单个数字

        [[:alpha:]] : 匹配单个大、小写字母

        [[:lower:]] : 匹配单个小写字母

        [[:upper:]] : 匹配单个大写字母

        [[:alnum:]] : 匹配单个数字或字母

        [[:bank:]] : 匹配单个空白字符

        [[:punct:]] : 匹配标点符号

        [[:contrl:]] : 匹配当控制字符

        [[:xdigit:]] : 匹配单个16进制数

    匹配次数:用来指定前面的字符出现的次数

      * : 任意次数,包括0次

      + : 至少一次

      ? : 0次或1次,前面的字符可有,可无

      {m}, {0,n}, {m,n}, {m,} : 分别指m次,最多n次,m-n次,最少m次

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

    位置锚定:

      ^ : 行首锚定,模式左侧

      $ : 行尾锚定,模式右侧

      \< : 词首锚定,单词模式左侧,单词指由数字和字母构成的字符串

      \> : 词尾锚定,单词右侧

        ^PATTERN$, 匹配整行只有指定的模式

        ^$ : 空行

        ^[[:blank:]]$ : 整行无可见字符

        \<word\> : 匹配整个单词

    分组

      () 将任意个字符用括号括起来做一个整体进行匹配

      后向引用:应用前面分组括号所匹配的内容,非模式本身, \1,\2 ...

        (th).*\1 : 匹配第一个括号所匹配的内容

3.fgrep : 不支持正则表达式, 仅匹配指定的字符串

  fgrep [optings] PATERN File...