您的位置:首页 > 其它

常用正则表达式实例讲解

2014-12-04 11:12 465 查看
Shell正则表达式
正则表达式:处理大量的字符串而定义的规则和方法,通过规定的符号的组合迅速的找到需要的内容。注意事项:1 正表达式的应用广泛,Linux中常用的正则表达式的命令:grep(egrep),sed,awk2.Linux的正则表达式和命令行中的通配符有本质的区别 Eg:命令行中通配符“*” 表示匹配所有,不同于正则表达式中的 *]# ll *.sh #命令行中“*”表示匹配所有3.文档阅读说明 文中 “]#” 表示在命令行下执行的命令即文中的绿色字体可以复制到命令航中执行 本文以实例讲解,读者可以打开虚拟机,边读边练 2014/12/4修改文中错误基础正则表达式以grep命令讲解注意事项:a.linux正则表达式以行为单位处理b.为了后面便于讲解,给grep取别名,目的是给匹配到的内容带颜色显示,取别名操作如下:]# alias grep=‘grep --color=auto’ #只在当前shell生效,如何使永久性的生效在后文有讲解c.注意字符集,要是grep命令匹配的内容显示异常,需定义字符集:LC_ALL=C]# LC_ALL=C 辅助文档:# cat reTest1 I am wewin not WEWINI like linux I like badminntion ball,billard ball and chinese chess. number 23000000number 12000 HAHAHAHAHAhahahahaha Linux正则表达式1)^world 以world开头的行2)world$ 以world结尾的行3)^$ 表示空行 Eg:]# alias grep='grep --color=auto' #]# grep ‘I’ reTest1 #包含I的行 I am wewin not WEWINI like linuxdo you like me? but not do you like II like badminntion ball,billard ball and chinese chess. ]# grep '^I' reTest1 # 以 I 开头的行 I am wewin not WEWINI like linuxI like badminntion ball,billard ball and chinese chess.]# grep 'I$' reTest1 #以I结尾的行do you like me? but not do you like I]# grep "^$" reTest1 #空行]# grep -v "^$" reTest1 #排除空行I am wewin not WEWINI like linuxdo you like me? but not do you like II like badminntion ball,billard ball and chinese chess.number 23000000number 12000HAHAHAHAHAhahahahaha 4). 代表且只能代表任意一个字符5)\ 转义字符,有特殊意义的字符表示为普通的意义,还原其原本的意义6)* 重复一个或多个前面的一个字符,不是通配符中的表示所有的意思7)+ 前面的元素或者组合必须出现一次或多次,属于扩展的,需要用egrep8)?规定前面的组合出现零次或一次,9).* 匹配所有的字符。^.* 以任意多个字符开头 ]# grep "." reTest1 #匹配全文,但是中间的空行会消失,要是只是单纯的匹配字符 “.” 需要转义I am wewin not WEWINI like linuxdo you like me? but not do you like II like badminntion ball,billard ball and chinese chess.number 23000000number 12000HAHAHAHAHAhahahahaha ]# grep "\." reTest1 #匹配包含“.”的行,需要脱去特殊含义。I like badminntion ball,billard ball and chinese chess.]# grep "0*" reTest2 #包含一个或多个0I am wewin not WEWINI like linuxdo you like me? but not do you like I I like badminntion ball,billard ball and chinese chess. number 23000000number 12000 HAHAHAHAHAhahahahaha 10)[a-z] #匹配a-z字符集合内任意一个字符集]# grep [a-z] reTest1I am wewin not WEWINI like linuxdo you like me? but not do you like II like badminntion ball,billard ball and chinese chess.number 23000000number 12000hahahahaha 11)[asdfds] #统配a-z的任意一字符集]# grep [asdfds] reTest1I am wewin not WEWINdo you like me? but not do you like II like badminntion ball,billard ball and chinese chess.hahahahaha ]# grep [^a-z] reTest1 #匹配包含除过a-z字符的行,I am wewin not WEWINI like linuxdo you like me? but not do you like II like badminntion ball,billard ball and chinese chess.number 23000000number 12000HAHAHAHAHA 13)^[abc] 以[a-z]开头的行]# grep ^[a-z] reTest1do you like me? but not do you like Inumber 23000000number 12000hahahahaha 14){n,m} 重复n到m次,前一个字符15){n,}至少n次多了不限16){n} n次17){,m}至多m次,少了不限注意:grep要对{转义},\{ \{ 要是用egrep就不需要转义 egrep相当于grep -E]# grep "0\{3\}" reTest1 #0连续出现3次]# grep -E "0\{3\}" reTest1 ]# grep "0\{,5\}" reTest1 #0出现0-5次 有报错,内在的bug,可以用grep "0\{0,5\}",两个属于等价的查询

本文出自 “wewinSHELL学习笔记” 博客,请务必保留此出处http://wewin11235.blog.51cto.com/8179974/1586211
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: