Linux文本处理三剑客:grep sed awk

grep: Global search Regular expression and Print out the line.

    作用:文本搜索工具,根据用户指定的筛选条件对目标文本进行匹配检查并打印出符合条件的的行

    模式:由正则表达式的元字符及文本字符所编写出的过滤条件;

    使用:grep [OPTIONS] PATTEN [FILE..]

        OPTIONS:

        --colour=auto:对匹配到的字符串着色后高亮显示

        -i:ignorecase,忽略字符的大小写;

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

        -V:匹配到的行不显示,显示不能被匹配的行

        -E:支持使用扩展的正则表达式元字符;

        -q,--quite,--silent:静默模式,即不输出任何信息;


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

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

        -C #: context,显示前后# 行


基本正则表达式元字符

    字符匹配:

        .:匹配任意单个字符;

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

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

            [:diglt:] [:alpha:] [:upper:] [:lower:] [:alnum:] [:punct:] [:space:]

    匹配次数:

        *:匹配前面字符任意次数,0,1,多次

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

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

        \+:匹配其前面字符至少一次;

        \{m\}:匹配其前面字符m次

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

            \{0,n\}:至多n次

            \{m,\}:至少m次

    位置锚定:

        ^:表示以符号后面的字符开头

        $:表示以符号前面的字符结尾

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

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

        \<PATTEN\>:匹配完整单词PATTEN

    分组及应用:

        \(\):将一个或多个字符捆绑在一起,当成一个整体进行处理;

        注意:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:

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

    \2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配的字符;

    \3:...

    ...

    

egrep:

    支持扩展的正则表达式实现类似于grep文本过滤功能;grep -E

    egrep [OPTION] PATTEN [FILE]

       选项:

        -i,-o,-v,-q,-A,-B,-C

        -G:支持基本正则表达式

       扩展正则表达式的元字符:

        字符匹配:

             .:匹配任意单个字符;

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

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

             [:diglt:]、[:alpha:]、[:upper:] [:lower:] [:alnum:] [:punct:] [:space:]

        次数匹配:

           *:任意次

           ?:0次或者1次

           +:1次或者多次

           {m}:m次

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

            {0,n}、{m,}

          位置锚定:

           ^:表示以符号后面的字符开头

           $:表示以符号前面的字符结尾

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

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

             \<PATTEN\>:匹配完整单词PATTEN

        分组及应用:

            ():将一个或多个字符捆绑在一起,当成一个整体进行处理;

           注意:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量

            或者:

            a|b:a或者b

             C|cat:C或cat

             (C|c)at:Cat或cat