zoukankan      html  css  js  c++  java
  • 七 、linux正则表达式

    为处理大量的字符串而定义的一套规则和方法

    1)linux正则表达式以行为单位处理

    2)alians grep = “grep –color=auto”,让匹配的内容显示颜色

    3)注意字符集,export LC_ALL=C

    [root@pyrene ~]# alias grep='grep --color=auto'

    [root@pyrene ~]# export LC_ALL=C

    [root@pyrene ~]# echo $LC_ALL      --检查字符集是否正确

    C

    一、正则表达式第一波字符说明

    1)^word  匹配word开头的内容  vim里面的^代表一行的开头

             [root@pyrene ~]# grep "^m" oldboy.log

    my blog is http://www.cnblogs.com

    my qq is 3110436742

    my god ,i am not p but pyrene

    2)word$   匹配以word结尾的内容,  vim里面的$代表一行的结尾

             [root@pyrene ~]# grep "m$" oldboy.log

    my blog is http://www.cnblogs.com

    3)^$  代表空行

    [root@pyrene ~]# grep -n "^$" oldboy.log   这里-n显示行号

    3:

    7:

    二、基础正则表达式第二波字符说明

    4).  代表且只能表示任意一个字符

    5)  转移符号,让有特殊身份意义的字符脱掉马甲

    6)*  重复0个或者多个前面的一个字符

    7).*  匹配所有字符

    [root@pyrene ~]# grep -n "." oldboy.log

    1:i am pyrene and

    2:i like linux

    4:i like badminton ball . billiard ball and chinese chess!

    5:my blog is http://www.cnblogs.com

    6:my qq is 3110436742

    8:my god ,i am not p but pyrene

    [root@pyrene ~]# grep -n ".*" oldboy.log

    1:i am pyrene and

    2:i like linux

    3:

    4:i like badminton ball . billiard ball and chinese chess!

    5:my blog is http://www.cnblogs.com

    6:my qq is 3110436742

    7:

    8:my god ,i am not p but pyrene

    三、第三波正则字符说明

    8)[abc]  匹配字符集合内任意一个祖父[a-zA-Z],[0-9]

    9)[^abc]  匹配不包含^后的任意一个字符的内容

             中括号里的^为取反,注意和中括号外面的以…开头的区别

    [root@pyrene ~]# grep "[abc]" oldboy.log

    i am pyrene and

    i like badminton ball . billiard ball and chinese chess!

    my blog is http://www.cnblogs.com

    my god ,i am not p but pyrene

    [root@pyrene ~]# grep "[^abc]" oldboy.log

    i am pyrene and

    i like linux

    i like badminton ball . billiard ball and chinese chess!

    my blog is http://www.cnblogs.com

    my qq is 3110436742

    my god ,i am not p but pyrene

    10) a{n,m} 重复a  n到m次,前一个重复的字符,如果要用egrep /sed –r可以去掉斜线

             a[n,] 重复a至少n次前一个重复的字符

    a{n} 重复a  n次

    a{,m}????

    注意egrep或者sed –r过滤一般特殊字符可以不转义

    [root@pyrene ~]# grep "0{0,}" oldboy.log

    i am pyrene and

    i like linux

    i like badminton ball . billiard ball and chinese chess!

    my blog is http://www.cnblogs.com

    my qq is 3110436742

    my god ,i am not p but pyrene

     

    扩展正则表达式

    1)+  表示重复一个或一个以上前面的字符

             [root@pyrene ~]# grep -E "go+d" oldboy.log

    my god ,i am not p but pyrene

    2)?  表示重复0个或者1个前面的字符

    3)|  表示同时过滤多个字符串

    [root@pyrene ~]# egrep "3306|1521" /etc/services

    mysql           3306/tcp                        # MySQL

    mysql           3306/udp                        # MySQL

    ncube-lm        1521/tcp                # nCube License Manager

    ncube-lm        1521/udp                # nCube License Manager

    4)()   后向引用,分组过滤

  • 相关阅读:
    (转) c/c++调用libcurl库发送http请求的两种基本用法
    (转)unordered_map与map的对比(C++11新特性)
    libevent简单介绍
    libevent入门
    日期转换成字符串
    LinkServer
    GridView小记
    SoapHeader
    Credential
    Notepad++ Emmet/Zen coding插件的安装
  • 原文地址:https://www.cnblogs.com/pyrene/p/8058971.html
Copyright © 2011-2022 走看看