您的位置:首页 > 运维架构 > Linux

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

2016-03-21 21:51 766 查看

1.0 Linux正则表达式

模拟例子模板

[root@oldboy /]# cdoldboy[root@oldboyoldboy]# lsa.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 fgoo18 egood[root@oldboyoldboy]# cat -n a.txt 1 :::::::lodboy,lodord,,lodbey2 ,,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 gdgoodgooodggdggoodoodegood
(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 chess5:my blong is http://oldboy.blog.51cto.com6:our site is http://www.etiantian.org7:my qq unm is 49000448.9:not 49000000448.10:my god ,i am not oldbey,but OLDBOYi11:gd12:good13:goood14:ggd15:ggood16:ood17:fgoo18:egood
注意:Linux系统下点可表示当前目录,也可加载文件!
(5) \ 转义字符,将特殊字符转义为普通字符例如:[root@oldboyoldboy]# grep -n "\." oldboy.log 2:I teach linux.5:my blong is http://oldboy.blog.51cto.com6:our site is http://www.etiantian.org7: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 chess5:my blong is http://oldboy.blog.51cto.com6:our site is http://www.etiantian.org7:my qq unm is 49000448.8:9:not 49000000448.10:my god ,i am notoldbey,but OLDBOYi11:gd12:good13:goood14:ggd15:ggood16:ood17:fgoo18:egood
(7) .* 匹配所有的字符例如:[root@oldboy oldboy]# grep -n ".*"oldboy.log1:I am oldboy teacheri!2:I teach linux.4:i like badminton ball ,billiard ball and chinese chess5:my blong is http://oldboy.blog.51cto.com6:our site is http://www.etiantian.org7:my qq unm is 49000448.9:not 49000000448.10:my god ,i am not oldbey,but OLDBOYi11:gd12:good13:goood14:ggd15:ggood16:ood17:fgoo18: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 chess5:my blong is http://oldboy.blog.51cto.com6:our site is http://www.etiantian.org10: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 chess5:my blong ishttp://oldboy.blog.51cto.com6:our site is http://www.etiantian.org7:my qq unm is 49000448.9:not 49000000448.10:my god ,i am not oldbey,but OLDBOYi11:gd12:good13:goood14:ggd15:ggood16:ood17:fgoo18:egood
(10) a\{n,m\} 重复n次到m次,前一个重复的字符。如果用grep/sed -r 可以去掉斜线例如: [root@oldboy oldboy]# grep -n "o\{2,3\}" oldboy.log 12:good13:goood15:ggood16:ood17:fgoo18:egooda\{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 chess5:my blong is http://oldboy.blog.51cto.com6:our site is http://www.etiantian.org7:my qq unm is 49000448.8:9:not 49000000448. 先匹配到前面4个在匹配后后面2个10:my god ,i am not oldbey,but OLDBOYi11:gd12:good13:goood14:ggd15:ggood16:ood17:fgoo18: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 lodboyxiaofang[root@oldboy oldboy]# awk -F"[:,]+" '{print $3}'a.txt lodordmachao
(2) ? 重复0个或1个?号前面的字符例如:[root@oldboyoldboy]# grep -En "g?d" oldboy.log 1:I am oldboy teacheri!4:i like badminton ball ,billiard ball and chinesechess5:my blong is http://oldboy.blog.51cto.com10:my god ,i am not oldbey,butOLDBOYi11:gd12:good13:goood14:ggd15:ggood16:ood18:egood[root@oldboy oldboy]# grep -En"go?d" oldboy.log 10:my god,i am not oldbey,but OLDBOYi11:gd14: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 正则 表达式