1. 背景

    在讲到shell编程时, 我们不得不提到正则表达式,  这个可以看似一门新的编程语言的"老家伙", 让我们很多刚入行的程序员来说又爱又恨, 爱因为它实在可以用最简短的语句写出强大的功能,  恨是因为它的语法与我们原来接触的任何一门高级编程语言来说都看似不似.  下面我们就开始主要来介绍正则


2. 正则分类

    • Basic正则:  出来的比较早, grep一般默认的就是Basic正则

    • Extended正则: 对Basic的扩展,   默认支持更多的转义字符


3. 基本语法


wKiom1dxLYDTb0hVAAA3aNgNSIg918.png

4. 数量限量符

wKioL1dxLYmTPtF1AABgCiTZlUs616.png

5. 位置限定符

    wKioL1dxLeeAEl95AAAyclQ3WBY204.png


6. 其它特殊字符

        wKiom1dxLh2yX1m1AAA2NV4Skpo871.png

    grep

    1. 作用    

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。


    2. 参数

        grep [options]

        主要参数: linux下 grep --help可查看

            -c:    只输出匹配行的计数

            -i:    不区分大小写

            -h:    查询多文件时不显示文件名

            -l:    查询多文件时只输出包含匹配字符的文件名

            -n:    显示匹配行级行号

            -s:    不显示不存在或无匹配文件的错误信息

            -v:    显示不包含匹配文本的所有行

            --color=auto:    可以将找到的关键词部分加上颜色的显示


    实战操作:   

    1、已知文件test.txt内容为[test][liyao][sea],请给出打 印test.txt内容时,不包含sea字符串的命令

    [假设这个目录文件是存在/data/下]

    方法一: grep -v "sea" /data/test.txt

wKiom1dxMG2gzfHAAAA-pVwqikE192.png

     

      方法一: cat /data/test.txt | grep -v "sea"

wKiom1dxMP2SZXZEAAA5aKJ8X40331.png对比两方法, 方法二比方法一效率慢一些,   但专业一些.





      本文转自asd1123509133 51CTO博客,原文链接:http://blog.51cto.com/lisea/1793447,如需转载请自行联系原作者