码迷,mamicode.com
首页 > 其他好文 > 详细

文本处理三剑客之grep

时间:2018-06-15 15:40:55      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:变量   glob   grep   字符   upper   贪婪模式   忽略   选项   count   

grep系:
grep:Global search Regular Expression and Print out the line.
利用正则表达式进行全局搜索并将匹配到的行显示出来;

    格式:
        grep [options] PATTERN [FILE...]
        grep [options] [-e PATTERN | -f FILE] [FILE...]

        PATTERN:过滤匹配条件,是由没有特殊意义的文本字符或者是正则表达式元字符组成;

正则表达式的元字符:会被正则表达式处理引擎解释为特殊含义的字符;

pcre:正则表达式处理引擎,prel语言的正在表达式引擎;

正在表达式的元字符:
    基本的正则表达式元字符:BRE
        字符匹配类:
            .:匹配任意单个字符;
            []:匹配任意指定范围内的单个字符;
            [^]:匹配任意指定范围以外的单个字符;
                下列所有的字符集都可以放置于[]之中用于匹配字符集范围内的单个字符:
                    [:lower:]
                    [:upper:]
                    [:alpha:]
                    [:digit:]
                    [:xdigit:]
                    [:alnum:]
                    [:punct:]
                    [:space:]
                    [a-z]:仅表示所有的小写字母
                    [A-Z]:仅表示所有的大写字母
                    [0-9]:仅表示所有的十进制数码

        次数匹配类:该类字符前面的一个字符可以出现的次数;
            *:其前面的字符可以出现任意次,即:0次,1次或多次;
            \?:其前面的字符可有可无,即:0次或1次;
            \+:其前面的字符至少出现一次;
            \{m,n\}:其前面的字符至少出现m次,最多不超过n次;
            \{m\}:其前面的字符必须出现m次;
            \{m,\}:其前面的字符至少出现m次;
            \{,n\}:其前面的字符出现至少出现0次,最多不超n次;

            注意:在正则表达式中,表示任意长度的任意字符:.*

        位置锚定字符:
            行锚定:
                行首锚定:^
                行尾锚定:$
            字锚定:
                字首锚定:\<或\b
                字尾锚定:\>或\b

        分组与前向引用字符:
            \(\):将小括号中包含的内容作为一个不可分割的整体来处理;
            \1, \2, \3,...:前向引用
                正则表达式处理引擎的内置变量,\1表示前面所出现的第一组小括号中括选的内容;\2表示前面所出现的第二组小括号中括选的内容;...

                \(string1\(string2\)\): \1表示string1,\2表示string2;
                \(string1\).*\(string2\):\1表示string1,\2表示string2;

        或者:
            \|:将其左右的字符或字符串当做整体对待;
            "C\|cat"  C  cat

    扩展的正则表达式元字符:ERE
        字符匹配类:
            .:匹配任意单个字符;
            []:匹配任意指定范围内的单个字符;
            [^]:匹配任意指定范围以外的单个字符;
                下列所有的字符集都可以放置于[]之中用于匹配字符集范围内的单个字符:
                    [:lower:]
                    [:upper:]
                    [:alpha:]
                    [:digit:]
                    [:xdigit:]
                    [:alnum:]
                    [:punct:]
                    [:space:]
                    [a-z]:仅表示所有的小写字母
                    [A-Z]:仅表示所有的大写字母
                    [0-9]:仅表示所有的十进制数码

        次数匹配类:该类字符前面的一个字符可以出现的次数;
            *:其前面的字符可以出现任意次,即:0次,1次或多次;
            ?:其前面的字符可有可无,即:0次或1次;
            +:其前面的字符至少出现一次;
            {m,n}:其前面的字符至少出现m次,最多不超过n次;
            {m}:其前面的字符必须出现m次;
            {m,}:其前面的字符至少出现m次;
            {,n}:其前面的字符出现至少出现0次,最多不超n次;

            注意:在正则表达式中,表示任意长度的任意字符:.*

        位置锚定字符:
            行锚定:
                行首锚定:^
                行尾锚定:$
            字锚定:
                字首锚定:\<或\b
                字尾锚定:\>或\b

        分组与前向引用字符:
            ():将小括号中包含的内容作为一个不可分割的整体来处理;
            \1, \2, \3,...:前向引用
                正则表达式处理引擎的内置变量,\1表示前面所出现的第一组小括号中括选的内容;\2表示前面所出现的第二组小括号中括选的内容;...

                (string1(string2)): \1表示string1,\2表示string2;
                (string1).*(string2):\1表示string1,\2表示string2;

        或者:
            |:将其左右的字符或字符串当做整体对待;
            "C|cat"  C  cat

grep系:
    grep:仅支持基本正则表达式元字符
    egrep:可以支持扩展正则表达式元字符
    fgrep:不支持任何形式的正则表达式元字符,将所有的字符都视为没有任何特殊意义的普通文本字符;

    常用选项:
        -A num:同时显示被PATTERN匹配到的行及其后续num行;
        -B num:同时显示被PATTERN匹配到的行及其前面num行;
        -C num:同时显示被PATTERN匹配到的行及其前后num行;
        --color[=WHEN]:以高亮颜色显示被匹配到的内容;
        -c, --count:不输出被PATTERN匹配的行的内容,而是输出被PATTERN匹配到的行数;
        -E, --extended-regexp:可以使grep命令支持扩展正则表达式元字符;相当于执行了egrep命令;
        -F, --fixed-strings:相当于fgrep;
        -e PATTERN, --regexp=PATTERN:指定多个PATTERN在一个命令行中生效;
        -f FILE, --file=FILE:从指定的文件中读取多个PATTERN用于一次搜索;
        -i, --ignore-case:忽略文件中的字符的大小写;
        -o, --only-matching:仅显示被PATTERN匹配到的部分,关闭贪婪模式;
        -q, --quiet, --silent:安静模式;相当于 grep > /dev/null
        -v, --invert-match:显示没有被PATTERN匹配到的行;

文本处理三剑客之grep

标签:变量   glob   grep   字符   upper   贪婪模式   忽略   选项   count   

原文地址:http://blog.51cto.com/13487800/2129800

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!