常用正则表达式实例讲解
Shell正则表达式 正则表达式:处理大量的字符串而定义的规则和方法,通过规定的符号的组合迅速的找到需要的内容。 注意事项: 1正表达式的应用广泛,Linux中常用的正则表达式的命令:grep(egrep),sed,awk 2.Linux的正则表达式和命令行中的通配符有本质的区别 Eg:命令行中通配符“*”表示匹配所有,不同于正则表达式中的* ]#ll*.sh#命令行中“*”表示匹配所有 3.文档阅读说明 文中 “]#” 表示在命令行下执行的命令即文中的绿色字体可以复制到命令航中执行 本文以实例讲解,读者可以打开虚拟机,边读边练
2014/12/4修改文中错误 基础正则表达式以grep命令讲解 注意事项: a.linux正则表达式以行为单位处理 b.为了后面便于讲解,给grep取别名,目的是给匹配到的内容带颜色显示,取别名操作如下: ]#aliasgrep=‘grep--color=auto’#只在当前shell生效,如何使永久性的生效在后文有讲解 c.注意字符集,要是grep命令匹配的内容显示异常,需定义字符集:LC_ALL=C LC_ALL=C 辅助文档: #catreTest1 IamwewinnotWEWIN Ilikelinux Ilikebadminntionball,billardballandchinesechess. number23000000 number12000 HAHAHAHAHA hahahahaha Linux正则表达式 1)^world 以world开头的行 2)world$ 以world结尾的行 3)^$ 表示空行 Eg: ]#aliasgrep='grep--color=auto'# ]#grep‘I’reTest1#包含I的行 doyoulikeme?butnotdoyoulikeI ]#grep'^I'reTest1#以I开头的行 ]#grep'I$'reTest1#以I结尾的行 ]#grep"^$"reTest1#空行 ]#grep-v"^$"reTest1#排除空行 4).代表且只能代表任意一个字符 5)转义字符,有特殊意义的字符表示为普通的意义,还原其原本的意义 6)*重复一个或多个前面的一个字符,不是通配符中的表示所有的意思 7)+前面的元素或者组合必须出现一次或多次,属于扩展的,需要用egrep 8)?规定前面的组合出现零次或一次, 9).*匹配所有的字符。^.*以任意多个字符开头 ]#grep"."reTest1#匹配全文,但是中间的空行会消失,要是只是单纯的匹配字符“.”需要转义 ]#grep"."reTest1#匹配包含“.”的行,需要脱去特殊含义。 grep"0*"reTest2#包含一个或多个0 number23000000 number12000 10)[a-z]#匹配a-z字符集合内任意一个字符集 ]#grep[a-z]reTest1 IamwewinnotWEWIN likelinux doyoulikeme?butnotdoyoulikeI likebadminntionball,billardballandchinesechess. number23000000 number12000 hahahahaha 11)[asdfds]#统配a-z的任意一字符集 ]#grep[asdfds]reTest1 IamwewinnotWEWIN doyoulikeme?butnotdoyoulikeI Ilikebadminntionball,billardballandchinesechess. haha ]#grep[^a-z]reTest1#匹配包含除过a-z字符的行, IamwewinnotWEWIN Ilikelinux doyoulikeme?butnotdoyoulikeI Ilikebadminntionball,0);font-weight:bold;font-size:14px;font-family:'宋体';">number23000000 number12000 HAHAHAHAHA 13)^[abc]以[a-z]开头的行 ]#grep^[a-z]reTest1 14){n,m}重复n到m次,前一个字符 15){n,}至少n次多了不限 16){n}n次 17){,m}至多m次,少了不限 注意:grep要对{转义},{{要是用egrep就不需要转义egrep相当于grep-E grep"0{3}"reTest#0连续出现3次 grep-E"0{3}"1 grep"0{,5}"#0出现0-5次 有报错,内在的bug,可以用grep"0{0,5}",两个属于等价的查询 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |