壳脚本编程之正则表达式(一)
一、前言
?本文主要讲述外壳正则表达式的主要概念和常用“三剑客”之一的grep命令
二,正则表达式的定义
?正则表达式:或称正规表达式,常规表达式。是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串,即通过一些特殊符号实现快速查找,删除,替换某个特定字符串。由普通字符和元字符组成的文字模式。
?普通字符:如大小写字母,数字,标点符号以及一些其他符号
?元字符:具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
?<强> 当然这些概念未免太过抽象而且枯燥、下面的实例或许可以有助于您理解这些抽象的概念。 强>
正则表达式包括:
-
<李>基础正则表达式——grep与sed支持李>
<李>扩展正则表达式——egrep与awk支持李>
三,正则表达式的作用
系统管理员常用,且是必备技能之一。有助于快速定位重要信息,解决相关问题。
四,正则表达式示例
下面结合实例细讲grep命令在正则表达式的作用与使用格式方法,从而引出基本正则表达式所包含的元字符的含义。
grep命令
-
<李> - n -显示行号李>
<李>————忽略大小写李>
<李> - v -反向查找李>
<代码类=" language-shell "> [root@lokott选择]#猫测试。txt//测试文本内容 他又矮又胖。 他穿着一身蓝色的马球衬衫和黑色的裤子。 足球之家> [root@lokott选择]# grep - n的测试。txt//显示行号检索含有该的行 4:舌无骨却能折断bones.12 ! 5:谷歌搜索关键字是最好的工具。 6:未来一年将考验我们的政治体制限制。 [root@lokott选择]# grep镍的测试。txt//显示行号,不区分大小写检索含有该的行 3:足球的故乡> [root@lokott选择]# grep - n“sh (io) rt”测试。txt//检索包含衬衫或者短的行 1:他又短又胖。 2:他穿着一身蓝色的马球衬衫和黑色的裤子。 [root@lokott选择]# grep - n“oo”测试。txt//重复字符检索 3:足球的故乡> [root@lokott选择]# grep - n ' ^ '测试。txt//检索以开的头的行 4:舌无骨却能折断bones.12 ! [root@lokott选择]# grep - n ' ^ [a - z]的测试。txt//检索以小写字母开头的行 1:他又短又胖。 4:舌无骨却能折断bones.12 ! 8:木头十字架! [root@lokott选择]# grep - n ' ^ (a-zA-Z)的测试。txt//检索以字母开头的行 1:他又短又胖。 2:他穿着一身蓝色的马球衬衫和黑色的裤子。 3:足球的故乡> root@lokott选择# grep - n ' \。美元的测试。txt//检索以点“。”结尾的行 1:他又短又胖。 3:足球的故乡> [root@lokott选择]# grep - n ' w . .d '测试。txt//检索w和d之间可以是任意两个字符的行 5:谷歌搜索关键字是最好的工具。 8:木头十字架! 9:事实胜于雄辩 [root@lokott选择]# grep - n“我们* d”测试。txt//检索w和d之间o出现0次或者多次的行 8:木头十字架! 12:# woood # 13:# woooooood # [root@lokott选择]# grep - n已坏* d测试。txt//检索第三个o出现0次或者多次的行 8:木头十字架! 12:# woood # 13:# woooooood # [root@lokott选择]# grep - n ' w。* d '测试。txt//检索w与d之间可有可无的字符的行 1:他又短又胖。 5:谷歌搜索关键字是最好的工具。 8:木头十字架! 9:事实胜于雄辩 12:# woood # 13:# woooooood # [root@lokott选择]# grep - n[0 - 9][0 - 9] *的测试。txt//检索任意数字所在的行 4:舌无骨却能折断bones.12 ! 7:π=3.141592653589793238462643383249901429 代码>
5)查找连续字符范围“{}”
?{}主要作用是为了限制一个范围内重复的字符串,例如查找3 - 5个点的连续字符即可需要使用{},但是由于在shell中其有特定意义,所以需要利用转义字符“\”,将“{}”字符转换成普通字符。
<代码类=" language-shell "> [root@lokott选择]# grep - n o \ \{2}的测试。txt//检索连续两个字符“o”的行 3:在BBC体育在线足球的故乡。 5:谷歌搜索关键字是最好的工具。 8:木头十字架! 12:# woood # 13:# woooooood # 15:我敢打赌,这个地方真是令人毛骨悚然的深夜! [root@lokott选择]# grep - n '我们\ d{2、5 \}”测试。txt//检索以w开d结头尾o出现2 - 5次的行 8:木头十字架! 12:# woood # [root@lokott选择]# grep - n '我们\ d{2 \}”测试。txt//检索w开d结头尾o出现2次以上的行 8:木头十字架! 12:# woood # 13:# woooooood #shell脚本编程之正则表达式(一)(基础正则表达式,grep)