深入浅出正则表达式及grep,egrep异同解析
一、前言 在我们初学Liunx时,就会遇到一拦路虎,那就是“正则表达式”。原因在于其结构的复杂性和逻辑性较强,需大量的练习才能将其掌握。故本文主要整理总结了正则表达式在grep(和egrep)中的基本用法,使大家对正则表达式有个整体的认识。 二、名词解释 正则表达式:
元字符:
三、分类
四、基本正则表达式(grep) 基本正则表达式的元字符:
五、扩展正则表达式(egrep) “扩展正则表达式”较之“基本正则表达式”,元字符更加精简,不再需要反斜杠()转义,且增加了+,|等元字符,如下:
六、实例 Question1: 显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行 Answer1: grep "^#[[:space:]]{1,}[^[:space:]]{1,}" /etc/rc.d/rc.sysinit Question2: 显示/boot/grub/grub.conf中以至少一个空白字符开头的行 Answer2:
grep "^[[:space:]]{1,}" /boot/grub/grub.conf Question3: 找出ifconfig命令结果中的1到255之间的整数 Answer3: ifconfig | egrep "b([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])b"
Question4: 显示/etc/passwd中用户名和备注内容一致的行 Answer4: egrep "([[:alnum:]]+):.*:1:" /etc/passwd
七、高级功能 非获取匹配:
正向预查:
反向预查:
八、补充 fgrep:(fast grep)不解析正则表达式,只能对固定的字符串进行搜索,故速度较grep和egrep快 九、参考资料 《Regular Expression Cookbook》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |