Linux grep与正则表达式浅析

来源:互联网 发布:开淘宝店的诈骗案 编辑:程序博客网 时间:2024/05/29 17:35

Linux grep与正则表达式浅析
grep
  grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。


grep语法
    grep [options] pattern [file...]
        options:
            -v:对搜索内容取反


            -i:搜索时忽略大小写


            -n:显示搜索内容的行号


            -o:只显示匹配到的内容


            -q:静默模式,不输出信息(常用于脚本,使用echo $?判断,echo $?返回值位0时证明grep命令匹配已到模式字符,非零1~255匹配失败)


            -e:指定多个pattern
            -A#:显示匹配pattern后#行内容
            -B#:显示匹配pattern前#行内容
            -C#:显示匹配pattern前后各#行内容


            -E:支持扩展表达式

基本正则表达式元字符
字符匹配
        . :匹配任意单个字符


        []:匹配中括号范围内的任意单个字符


        [^]:匹配中括号范围外的任意单个字符


        [:alpha:]:匹配任意大小写字母


        [:alnum:]:匹配字母与数字


        [:lower:]:匹配任意小写字母


        [:upper:]:匹配任意大写字母


        [:space:]:匹配空格


        [:digit:]:匹配十进制数字
        [:punct:]:匹配标点符号
次数匹配
        * :匹配前字符任意次,0,1,……


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


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


        \+:匹配前字符1次至无限次(至少1次)


        \{n\}:匹配前字符n次


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


        \{n,\}:匹配前字符至少n次,
        \{,m\}:匹配前字符至多m次
位置锚定
        ^ :锚定行首


        $ :锚定行尾



        ^$ :表示空行,^[[:space:]]\+$:空白行

        \<或\b:锚定词首


        \>或\b:锚定词尾


        注:\b:位置决定锚定词首或词尾
分组及引用
        :将一个或多个字符"捆绑"成分组,后向使用变量\1引用(可按分组数引用对应变量,引用的是匹配到的字符而非匹配模式)


        最后一条命令:查找/etc/passwd文件同行中出现同一单词出现两次的行

扩展正则表达式元字符
字符匹配
        与基本正则表达式相同(使用方法与基本正则表达式相同)
次数匹配
        * :匹配前字符任意次,0,1,……(使用方法与基本正则表达式相同)
        .*:匹配任意长度任意字符,(使用方法与基本正则表达式相同)
        ?:匹配前字符0次或1次,(使用方法与基本正则表达式相同,以此为例)


        +:匹配前字符1次至无限次(至少1次),(使用方法与基本正则表达式相同,)
        {n}:匹配前字符n次,(使用方法与基本正则表达式相同)
        {n,m}:匹配前字符至少n次,至多m次,(使用方法与基本正则表达式相同)
        {n,}:匹配前字符至少n次,(使用方法与基本正则表达式相同)
        {,m}:匹配前字符至多m次,(使用方法与基本正则表达式相同)
位置锚定
        与基本正则表达式相同,(使用方法与基本正则表达式相同)
分组引用
        ():扩展正则表达式分组不需要对其转义,使用和基本正则表达式相同


其他
        在基本正则表达式模式匹配时使用或(|)需要对其转义(前面加\),扩展正则表达式模式匹配时使用或(|)不需要对其转义。


配图为常用选择。

0 0
原创粉丝点击