正规表示法 (Regular Expression, RE, 或称为常规表示法)是透过一些特殊字符的排列,用以『搜寻/取代/删除』一列或多列文字字符串, 简单的说,正规表示法就是用在字符串的处理上面的一项『表示式』。正规表示法并不是一个工具程序, 而是一个字符串处理的标准依据,如果您想要以正规表示法的方式处理字符串,就得要使用支持正规表示法的工具程序才行, 这类的工具程序很多,例如 vi, sed, awk 等等。 |
1. 前言: 什么是正规表示法
1.1 什么是正规表示法
1.2 正规表示法对于系统管理员的用途
1.3 正规表示法的广泛用途
1.4 正规表示法与 Shell 在 Linux 当中的角色定位
1.5 延伸的正规表示法
2. 基础正规表示法
2.1 语系对正规表示法的影响
2.2 grep 的一些进阶选项
2.3 基础正规表示法练习
2.4 基础正规表示法字符汇整(characters)
2.5 sed 工具: 行的新增/删除, 行的取代/显示, 搜寻并取代, 直接改檔
3. 延伸正规表示法
4. 文件的格式化与相关处理
4.1 printf: 格式化打印
4.2 awk:好用的数据处理工具
4.3 档案比对工具:, diff, cmp, patch
4.4 档案打印准备工具: pr
5. 重点回顾
6. 本章习题
7. 参考数据与延伸阅读
前言:什么是正规表示法
约略了解了 Linux 的基本指令 (BASH) 并且熟悉了 vim 之后,相信你对于敲击键盘的打字与指令下达比较不陌生了吧? 接下来,底下要开始介绍一个很重要的观念,那就是所谓的『正规表示法 (Regular Expression)』啰!
什么是正规表示法
任何一个有经验的系统管理员,都会告诉你:『正规表示法真是挺重要的!』 为什么很重要呢?因为日常生活就使用的到啊!举个例子来说, 在你日常使用 vim 作字处理或程序撰写时使用到的『搜寻/取代』等等的功能, 这些举动要作的漂亮,就得要配合正规表示法来处理啰!
简单的说,正规表示法就是处理字符串的方法,他是以行为单位来进行字符串的处理行为, 正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/取代』某特定字符串的处理程序!
举例来说,我只想找到 VBird(前面两个大写字符) 或 Vbird(仅有一个大写字符) 这个字样,但是不要其他的字符串 (例如 VBIRD, vbird 等不需要),该如何办理?如果在没有正规表示法的环境中(例如 MS word),你或许就得要使用忽略大小写的办法, 或者是分别以 VBird 及 Vbird 搜寻两遍。但是,忽略大小写可能会搜寻到 VBIRD/vbird/VbIrD 等等的不需要的字符串而造成困扰。
再举个系统常见的例子好了,假设妳发现系统在开机的时候,老是会出现一个关于 mail 程序的错误, 而开机过程的相关程序都是在 /etc/init.d/ 底下,也就是说,在该目录底下的某个档案内具有 mail 这个关键词,你想要将该档案捉出来进行查询修改的动作。此时你怎么找出来含有这个关键词的档案? 你当然可以一个档案一个档案的开启,然后去搜寻 mail 这个关键词,只是.....该目录底下的档案可能不止 100 个说~ 如果了解正规表示法的相关技巧,那么只要一行指令就找出来啦:『grep 'mail' /etc/init.d/*』 那个 grep 就是支持正规表示法的工具程序之一!如何~很简单吧!
谈到这里就得要进一步说明了,正规表示法基本上是一种『表示法』, 只要工具程序支持这种表示法,那么该工具程序就可以用来作为正规表示法的字符串处理之用。 例如 vi, grep, awk ,sed 等等工具,因为她们有支持正规表示法, 所以,这些工具就可以使用正规表示法的特殊字符来进行字符串的处理。但例如 cp, ls 等指令并未支持正规表示法, 所以就只能使用 bash 自己本身的通配符而已。
正规表示法对于系统管理员的用途
那么为何我需要学习正规表示法呢?对于一般使用者来说,由于使用到正规表示法的机会可能不怎么多, 因此感受不到他的魅力,不过,对于身为系统管理员的你来说,正规表示法则是一个『不可不学的好东西!』 怎么说呢?由于系统如果在繁忙的情况之下,每天产生的讯息信息会多到你无法想象的地步, 而我们也都知道,系统的『错误讯息登录档案 (第十九章)』 的内容记载了系统产生的所有讯息,当然,这包含你的系统是否被『入侵』的记录数据。
但是系统的数据量太大了,要身为系统管理员的你每天去看这么多的讯息数据, 从千百行的资料里面找出一行有问题的讯息,呵呵~光是用肉眼去看,想不疯掉都很难! 这个时候,我们就可以透过『正规表示法』的功能,将这些登录的信息进行处理, 仅取出『有问题』的信息来进行分析,哈哈!如此一来,你的系统管理工作将会 『快乐得不得了』啊!当然,正规表示法的优点还不止于此,等你有一定程度的了解之后,你会爱上他喔!
· Linux安全网鼓励用户将网页内容和下载地址转贴发在blog,论坛等
· 所有软件已经过我们安装检测,如不能正常运行,请检查环境和硬件,并留言反馈给我们
· 判断软件好坏,请用户参考软件用户评论,也请您将使用体验留言分享给更多用户作为参考