zoukankan      html  css  js  c++  java
  • grep与正则表达式

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

      模式:正则表达式编写的过滤条件。

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

        分成两类:

          基本正则表达式:BRE

          扩展正则表达式:ERE(grep -E,egrep)    

        grep的使用:

          grep [选项]  模式 [文件...]

            主要选项:

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

              -v:显示不被”模式“匹配的行;                   

              -i:忽略字符大小写;

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

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

              -A #:显示匹配行与后#行;

              -B #:显示匹配行与前#行;

              -C #:显示匹配行与前后各#行;

              -E:使用ERE(相当于,egrep);

              -n:显示匹配行及行号;

              -c:仅显示模式匹配到的次数;

              -l:匹配多个文件,仅显示包含匹配字符的文件名;

              -L:匹配多个文件,仅显示不包含匹配字符的文件名;

    基本正则表达式元字符:

      字符匹配:

        .:      匹配任意单个字符;

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

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

        [:alnum:]:  代表英文大小写字符及数字,及a-z,A-Z,1-9

        [:alpha:]:   代表英文大小写字符,及a-z,A-Z

        [:cntrl:]:     代表控制按键,CR、LF、Tab、Del等

        [:digit:]:     代表数字,1-9

        [:graph:]:   除了空格键与Tab键以外的所有按键

        [:lower:]:    代表小写字母,a-z

        [:print:]:     代表任何可以被打印出来的字符

        [:punct:]:    代表标点符号,即"'?!;:#$

        [:space:]:   任何会产生空白的字符,包括空格键[Tab]CR等

        [:upper:]:    代表大写字母,A-Z

        [:xdigit:]:     代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符

          注:以上[:***:]需要双中括号使用,即: [[:***:]]

        w:  单个单词字符(字母、数字与_) 相当于[[:alnum:]_]

        W:  单个非单词字符

      匹配次数:

        *:匹配前面的字符0次或多次;

        .:匹配任意单个字符;

        .*:即匹配任意字符0次或多次;

        ?:匹配前面的字符0次或1次;

        +:匹配前面的字符1次或多次;

        {m}:匹配前面的字符m次;

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

        {0,n}:匹配前面的字符至多n次;

        {m,}:匹配前面的字符至少m次;

      位置锚定:

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

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

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

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

      分组及后向引用:

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

        后向引用:应用前面的分组括号中模式所匹配的字符(而非模式本身),1,2....

          例如:(abc*(def)ghe?)

             1:abc*(def)ghe?  对应第一个左括号所在括号中的内容

             2:def        对应第二个左括号所在括号中的内容

      扩展正则表达式元字符:

          同上正则表达式:区别在于特殊符号不需要使用“”进行转义。?等于?,()等于(),{m}等于{m},+等于+。  注:<,>,仍然需要加“”

          n|m:|匹配左边或右边的所有内容

          例如:

              abc|def 匹配abc或def,默认匹配左右边所有字符,可用()进行分组,如下

              ab(c|de)f  匹配c|de

        

  • 相关阅读:
    程序的循环结构
    异常处理
    java中多态的使用
    java中String类型的相关知识
    java中类与对象
    java中部分知识点的验证实现
    java 中递归的实现 以及利用递归方法实现汉诺塔
    java 枚举类型和数据二进制等问题思考
    简单的java程序通过对话框输出 计算加减乘除运算(运算方法可选择)
    大道至简第二章读后感
  • 原文地址:https://www.cnblogs.com/Stong/p/6716785.html
Copyright © 2011-2022 走看看