文本处理三剑客之grep与正则表达式

grepnginx

  • 什么是grepgit

    grep: Global search REgular expression and Print out the line正则表达式

    做用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行express


  • grep的基础用法vim

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

    --color=auto: 对匹配到的文本着色显示ide

    -v: 显示不被pattern 匹配到的行工具

    -i: 忽略字符大小写spa

    -n: : 显示匹配的行号orm

    -c: 统计匹配的行数

    -o: 仅显示匹配到的字符串

    -q: 静默模式,不输出任何信息

    -A #: after, 后#行

    -B #: before, 前#行

    -C # :context, 先后各#行

    -e :实现多个选项间的逻辑or 关系

    例:grep –e ‘cat ’ -e ‘dog’ file

    -w :匹配整个单词

    -E :使用ERE

    -F :至关于fgrep 


正则表达式

  • 什么是正则表达式  

    正则表达式(REGEXP):由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

    程序支持 :grep,sed,awk,vim, less,nginx,varnish等

    大体分两类:

    基本正则表达式:BRE

    扩展正则表达式:ERE


  • 字符匹配

        .    匹配任意单个字符

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

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

    [:alnum:] 字母和 数字

    [:alpha:] 表明任何英文大小写字符,亦即 A-Z, a-z

    [:lower:] 小写字母 [:upper:] 大写字母    

    [:blank:] 空白字符(空格和制表符)

    [:space:] 水平和垂直的空白字符(比[:blank:] 包含的范围广)

    [:cntrl:] 不可打印的控制字符(退格、删除、警铃...) )

    [:digit:] 字 十进制数字 [:xdigit:] 十六进制数字

    [:graph:] 可打印的非空白字符

    [:print:] 可打印字符

    [:punct:] 标点符号


  • 匹配次数:用在要指定次数的字符后面,用于指定前面的字

    符要出现的次数

    * 匹配 前面的字符任意次,包括0次 (贪婪模式:尽量长的匹配)

    .* 任意 长度的任意字符

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

    \+ 匹配 其前面的字符至少1次 

    \{n\} 匹配 前面的字符n次

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

    \{,n\} 匹配 前面的字符至多n次 

    \{n,\} 匹配 前面的字符至少n次


  • 位置锚定:定位出现的位置

    ^ 行首锚定,用于模式的最左侧

    $ 行尾锚定,用于模式的最右侧

    ^PATTERN$ 用于模式匹配整行

    ^$ 空行

    ^[[:space:]]*$ 空白行

    \< 或 或 \b 词首锚定,用于单词模式的左侧

    \> 或 或 \b 词尾锚定;用于单词模式的右侧

    \<PATTERN\> 匹配整个单词


  • 分组

     \(\) 将一个或多个字符捆绑在一块儿,看成一个总体进行处理,

    如:\(root\)\+分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...

    \1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

 示例

    \(string1\+\(string2\)*\)

    \1 :string1\+\(string2\)*

    \2 :string2


  • 后向引用

    引用前面的分组括号中的模式所匹配字符 , 而非模式自己


扩展正则表达式

  • 次数匹配

    * :匹配前面字符任意次

    ? : 0 或1次 次

    + :1 次或屡次

    {m} :匹配m次 次

    {m,n} :至少m ,至多n次


  • 位置锚定

    ^ : 行首

    $ : 行尾

    \<, \b : 语首

    \>, \b :


  • 分组

    分组( )

    后向引用:\1, \2, ...


  • 或者

    a|b: a 或b

    C|cat: C 或cat

    (C|c)at:Cat 或cat

相关文章
相关标签/搜索