• linux正则表达式


    1.搜索特定字符串

    [root@localhost ~]# grep  'the' anaconda-ks.cfg   (在anaconda-ks.cfg中查找包含the的行)

    [root@localhost ~]# grep -n 'the' anaconda-ks.cfg (-n显示行号)

    反选,即不包含the的行

    [root@localhost ~]# grep -vn 'the' anaconda-ks.cfg

    取得不分大小写的the

    [root@localhost ~]# grep -in 'the' anaconda-ks.cfg

    2.[]来搜索集合字符  

     搜索test和tast,发现有通用的t?st

    [root@localhost ~]# grep -n 't[ae]st' anaconda-ks.cfg  ([]中不论有多少个字符都代表某一个字符,且可以用[a-zA-Z0-9]来表示所有字母和数字)

    搜索含有oo的行

    [root@localhost yaotameng]# grep -n 'oo' test.txt
    2:the mgoongkey
    3:The Moonkey

    搜索oo且oo前不是g的行
    [root@localhost yaotameng]# grep -n '[^g]oo' test.txt
    3:The Moonkey

    搜索oo,且前边不要大写字母

    [root@localhost yaotameng]# grep -n '[^A-Z]oo' test.txt
    2:the mgoongkey

    只在行首出现的the

    [root@localhost yaotameng]# grep -n ^'the' test.txt  (注意这里是单引号 不是[],中括号表示一个字符)
    2:the mgoongkey

    ^在[]内外是不同的意义:

    在[]内表示反选,如[^a-z]oo表示oo前不是小写的字母行

    在[]外表示在行首 如^[a-z]表示以小写字母开头的行

    在行尾出现则用$号

    如要找到一.结尾的行

    [root@localhost yaotameng]# grep -n '\.$' test.txt
    4:bb test a.

    找到空白行

    [root@localhost yaotameng]# grep -n '^$' test.txt
    4:
    6:
    8:
    [root@localhost yaotameng]#

    去掉文档中的空白行和#注释行

    [root@localhost yaotameng]# grep -v '^$' my.cnf |grep -v '^#'

    正则表达是中的.与* 

     .表示一定有一个字符

    *表示重复前一个字符0-无穷多次

    限定范围{}

    [root@localhost yaotameng]# grep -n 'o\{2\}' test.txt  (找到两个O的字符串)
    2:the mgoongkey
    3:The Moonkey

    [root@localhost yaotameng]# grep -n 'go\{2,5\}g' test.txt  (找g,g中间有2-5个O的字符串)
    2:the mgoogkey

    [root@localhost yaotameng]# grep -n 'go\{2,\}g' test.txt  (找g,g中间有2个以上O的字符串)
    2:the mgoogkey

    延伸正则表示法

    grep需要加-E才能支持延伸表示法

    或者直接用命令egrep

    +:重复一个活一个以上前一个字符

    egrep -n 'go+d' regular_express.txt  (god ,good,gooo...d)

    ?:0个或一个前一个字符

    egrep -n 'go?d' regular_express.txt (gd或者god)

    |:用戒( or )癿方式找出数个字符串

    egrep -n 'gd|good|dog' regular_express.txt

    ():找出群组字符串

    egrep -n 'g(la|oo)d' regular_express.txt (找出glad或者good)

    ()+:多个重复群组

    echo 'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C'

  • 相关阅读:
    Assets Pipeline
    how to execute-shell-commands by ruby
    DFS---迷宫问题
    病毒感染监测
    RE数组开多大?
    C++如何输入含空格的字符串
    后缀算术表达式
    中缀表达式转化为后缀表达式
    基于两端操作的循环队列的实现---怎么判断队满??
    循环队列--忘记分配空间和如何用tag判断队空队满
  • 原文地址:https://www.cnblogs.com/lu215225/p/3012725.html
Copyright © 2020-2023  润新知