首页 > 系统服务 > 详细

linux基本正则和扩展正则建dan

时间:2016-03-22 06:35:17      阅读:304      评论:0      收藏:0      [点我收藏+]

1.0          Linux正则表达式

模拟例子模板

 

[root@oldboy /]# cdoldboy

[root@oldboyoldboy]# ls

a.txt  oldboy.log

 [root@oldboy oldboy]# cat -n oldboy.log

     1  Iam oldboy teacheri!

     2  Iteach linux.

     3

     4  ilike badminton ball ,billiard ball and chinese chess

     5 my blong is http://oldboy.blog.51cto.com

     6 our site is http://www.etiantian.org

     7 my qq unm is 49000448.

     8

     9 not 49000000448.

    10 my god ,i am not oldbey,but OLDBOYi

    11 gd

    12 good

    13 goood

    14 ggd

    15 ggood

    16 ood

    17 fgoo

18  egood

[root@oldboyoldboy]# cat -n a.txt

1  :::::::lodboy,lodord,,lodbey

2  ,,xiaofang:::machao:

1.01  基本正则表达式

(1)    ^string   表示以string开头的内容

例如:[root@oldboyoldboy]# grep "^I" oldboy.log

I am oldboy teacheri!

I teach linux.
(2)    string$    
表示以string结尾的内容

例如:[root@oldboyoldboy]# grep "d$" oldboy.log  

gd

good

goood

ggd

ggood

ood

egood
(3)    ^$       
表示空行

例如:[root@oldboyoldboy]# grep -n "^$" oldboy.log 

3:

8:
(4)    .       
“.”表示任意单个字符

例如:[root@oldboyoldboy]# grep -n "." oldboy.log  

1:I am oldboy teacheri!

2:I teach linux.

4:i like badminton ball ,billiard ball and chinese chess

5:my blong is http://oldboy.blog.51cto.com

6:our site is http://www.etiantian.org

7:my qq unm is 49000448.

9:not 49000000448.

10:my god ,i am not oldbey,but OLDBOYi

11:gd

12:good

13:goood

14:ggd

15:ggood

16:ood

17:fgoo

18:egood
        注意:Linux系统下点可表示当前目录,也可加载文件!
(5)    \       转义字符,将特殊字符转义为普通字符

例如:[root@oldboyoldboy]# grep -n "\." oldboy.log

2:I teach linux.

5:my blong is http://oldboy.blog.51cto.com

6:our site is http://www.etiantian.org

7:my qq unm is 49000448.

9:not 49000000448.
         eg: "\^string"
表示普通字符串为"^string",即将\后的^转义为普通字符,而不是表示以string开头的字符串
(6)    *       重复0个或多个*号前面的字符

例如:[root@oldboyoldboy]# grep -n "o*" oldboy.log 

1:I am oldboy teacheri!

2:I teach linux.

3:

4:i like badminton ball ,billiard ball and chinese chess

5:my blong is http://oldboy.blog.51cto.com

6:our site is http://www.etiantian.org

7:my qq unm is 49000448.

8:

9:not 49000000448.

10:my god ,i am notoldbey,but OLDBOYi

11:gd

12:good

13:goood

14:ggd

15:ggood

16:ood

17:fgoo

18:egood
(7)    .*       
匹配所有的字符

例如:[root@oldboy oldboy]# grep -n ".*"oldboy.log

1:I am oldboy teacheri!

2:I teach linux.

4:i like badminton ball ,billiard ball and chinese chess

5:my blong is http://oldboy.blog.51cto.com

6:our site is http://www.etiantian.org

7:my qq unm is 49000448.

9:not 49000000448.

10:my god ,i am not oldbey,but OLDBOYi

11:gd

12:good

13:goood

14:ggd

15:ggood

16:ood

17:fgoo

18:egood
         eg: ^.*
表示以任意0个或多个字符开头
(8)    [abcd]    匹配[]中的任意单个字符

例如: 例如: [root@oldboy oldboy]# grep -n"[abc]" oldboy.log 

1:I am oldboyteacheri!

2:I teach linux.

4:i like badminton ball ,billiard ball and chinese chess

5:my blong is http://oldboy.blog.51cto.com

6:our site is http://www.etiantian.org

10:my god ,i am not oldbey,but OLDBOYi


(9)    [^abcd]    
排除包含a或b或c或d的内容

例如: 例如: [root@oldboy oldboy]# grep -n"[^abc]" oldboy.log 

1:I am oldboy teacheri!

2:I teachlinux.

4:i like badmintonball ,billiard ball and chinese chess

5:my blong ishttp://oldboy.blog.51cto.com

6:our site is http://www.etiantian.org

7:my qq unm is 49000448.

9:not 49000000448.

10:my god ,i am not oldbey,but OLDBOYi

11:gd

12:good

13:goood

14:ggd

15:ggood

16:ood

17:fgoo

18:egood
(10)    a\{n,m\} 
重复n次到m次,前一个重复的字符。如果用grep/sed -r 可以去掉斜线

例如: [root@oldboy oldboy]# grep -n "o\{2,3\}" oldboy.log        

12:good

13:goood

15:ggood

16:ood

17:fgoo

18:egood

a\{n,\}   重复至少n次,前一个重复的字符。如果用grep/sed -r 可以去掉斜线

例如[root@oldboyoldboy]# grep -n "0\{3,\}" oldboy.log   

7:my qq unm is 49000448.

9:not 49000000448.

[root@oldboy oldboy]# grep -n"0\{4,\}" oldboy.log 

9:not 49000000448.

a\{n\}    重复n次,前一个重复的字。如果用grep/sed -r 可以去掉斜线

例如:[root@oldboy oldboy]# grep -n"0\{4\}" oldboy.log  

9:not 49000000448.

a\{,m\}   重复最多重复m次,前一个重复的字符。如果用grep/sed -r 可以去掉斜线           (,前是0-m)

例如:[root@oldboy oldboy]# grep -n"0\{,4\}" oldboy.log

1:I am oldboy teacheri!

2:I teach linux.

3:

4:i like badminton ball ,billiard ball and chinese chess

5:my blong is http://oldboy.blog.51cto.com

6:our site is http://www.etiantian.org

7:my qq unm is 49000448.

8:

9:not 49000000448.                  先匹配到前面4个在匹配后后面2个

10:my god ,i am not oldbey,but OLDBOYi

11:gd

12:good

13:goood

14:ggd

15:ggood

16:ood

17:fgoo

18:egood
          
注意:grep时需要对{}符号进行转义,即编码方式为\{\},但使用egrep时,无需转义

 

1.02 扩展正则表达式

命令:egrep 或 grep -E
(1) +    重复1个或多个+号前面的字符

例如:[root@oldboyoldboy]# cat -n a.txt

     1 :::::::lodboy,lodord,,lodbey

     2 ,,xiaofang:::machao:

[root@oldboy oldboy]# awk -F"[:,]+"  ‘{print $2}‘a.txt 

lodboy

xiaofang

[root@oldboy oldboy]# awk -F"[:,]+"  ‘{print $3}‘a.txt 

lodord

machao
(2) ?    
重复0个或1个?号前面的字符

例如:[root@oldboyoldboy]# grep -En "g?d" oldboy.log 

1:I am oldboy teacheri!

4:i like badminton ball ,billiard ball and chinesechess

5:my blong is http://oldboy.blog.51cto.com

10:my god ,i am not oldbey,butOLDBOYi

11:gd

12:good

13:goood

14:ggd

15:ggood

16:ood

18:egood

[root@oldboy oldboy]# grep -En"go?d" oldboy.log

10:my god,i am not oldbey,but OLDBOYi

11:gd

14:ggd
(3) |    
用或的方式查找多个字符串

例如:[root@oldboyoldboy]# find /oldboy -type f -name "*.txt" |xargs cat

:::::::lodboy,lodord,,lodbey

,,xiaofang:::machao:
(4) ()    
查找"用户组"字符串

例如:

[root@oldboy ~]# ifconfig eth0|sed -nr ‘2s#^.*dr:(.*)  Bcast:(.*)  Mask.*$#\1,\2#gp‘

192.168.93.133,192.168.93.255





linux基本正则和扩展正则建dan

原文:http://11271116.blog.51cto.com/11261116/1753659

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!