Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1370783
  • 博文数量: 245
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3094
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 14:51
文章存档

2011年(2)

2009年(152)

2008年(91)

我的朋友

分类:

2009-01-17 14:40:47

约略瞭解了 Linux 的基本指令 ( Shell ) 并且熟悉了 vi 之后,相信您对于敲击键盘与指令比较不陌生了吧?? 接下来,底下要开始介绍一个很重要的观念,那就是所谓的‘正规表示法’啰!

什么是正规表示法
任何一个有经验的系统管理员,都会告诉您:‘正规表示法真是挺重要的!’ 为什么很重要呢?因为日常生活就使用的到啊!举个例子来说, 在您日常处理文书作业时,应该会常常使用到‘搜寻/取代’等等的功能吧? 这些举动要作的漂亮,就是正规表示法的工作了!

简单的说,正规表示法就是处理字串的方法他是以行为单位, 来进行字串的处理行为,他透过一些特殊符号的辅助,可以让使用者轻易的达到 搜寻/取代 某特定字串的处理程序!

举例来说,我要找到 VBird 或 Vbird 这个字样,但是不要其他的字串,该如何办理? 如果在没有正规表示法的环境中(例如 MS word),您或许就得要使用忽略大小写的办法, 或者是分别以 VBird 及 Vbird 搜寻两遍。但是,忽略大小写可能会搜寻到 VBIRD/vbird/VbIrD 等等的不需要的字串,而造成使用者的困扰。

再举个系统常见的例子好了,假设你发现系统在开机的时候,老是会出现一个关于 mail 程式的错误, 而开机过程的相关程序都是在 /etc/rc.d/ 底下,也就是说,在该目录底下的某个档案内具有 mail 这个关键字,好了,此时,您怎么找出来含有这个关键字的档案??您当然可以一个档案一个档案的开启, 然后去搜寻 mail 这个关键字,只是.....该目录底下的档案可能不止 100 个说~ 如果瞭解正规表示法的相关技巧,那么只要一行指令就找出来啦! ‘grep 'mail' /etc/rc.d/*’ 那个 grep 就是支援正规表示法的工具程式之一!如何~很简单吧! ^_^y

谈到这里就得要进一步说明了,正规表示法基本上是一种‘表示法’, 只要工具程式支援这种表示法,那么该工具程式就可以用来作为正规表示法的字串处理之用。 也就是说,例如 vi, grep, awk ,sed 等等工具,因为她们有支援正规表示法, 所以,这些工具就可以使用正规表示法的特殊字元来进行字串的处理。


正规表示法对于系统管理员的用途

那么为何我需要学习正规表示法呢?对于一般使用者来说,由于使用到正规表示法的机会可能不怎么多, 因此感受不到他的魅力,不过,对于身为系统管理员的您来说, 正规表示法则是一个‘不可不学的好东西!’ 怎么说呢?由于系统如果在繁忙的情况之下,每天产生的讯息资讯会多到你无法想像的地步, 而我们也都知道,系统的‘错误讯息登录档案’ 的内容(这部份我们在第五篇会详谈)记载了系统产生的所有讯息,当然, 这包含你的系统是否被‘入侵’的纪录资料。

但是系统的资料量太大了,要身为系统管理员的你每天去看这么多的讯息资料, 从千百行的资料里面找出一行有问题的讯息,呵呵~光是用肉眼去看,想不疯掉都很难! 这个时候,我们就可以透过‘正规表示法’的功能,将这些登录的资讯进行处理, 仅取出‘有问题’的资讯来进行分析,哈哈!如此一来,你的系统管理工作将会 ‘快乐得不得了’啊!当然,正规表示法的优点还不止于此,等您有一定程度的瞭解之后,您会爱上他喔!
小标题的图示正规表示法的广泛用途
正规表示法除了可以让系统管理员管理主机更为便利之外,事实上, 由于正规表示法强大的字串处理能力,目前一堆软体都支援正规表示法呢! 最常见的就是‘邮件伺服器’啦!

如果您留意网际网路上的消息,那么应该不能发现,目前造成网路大塞车的主因之一就是‘垃圾/广告信件’了, 而如果我们可以在主机端,就将这些问题邮件剔除的话,用户端就会减少很多不必要的频宽耗损了。 那么如何剔除广告信件呢?由于广告信件几乎都有一定的标题或者是内容,因此, 只要每次有来信时,都先将来信的标题与内容进行特殊字串的比对,发现有不良信件就予以剔除! 嘿!这个工作怎么达到啊?就使用正规表示法啊!目前两大邮件伺服器软体 sendmail 与 postfix 以及支援邮件伺服器的相关分析套件,都支援正规表示法的比对功能!

当然还不止于此啦,很多的伺服器软体、以及套件都支援正规表示法呢!当然, 虽然各家软体都支援他,不过,这些‘字串’的比对还是需要系统管理员来加入比对规则的, 所以啦!身为系统管理员的你,为了自身的工作以及用户端的需求, 正规表示法实在是很需要也很值得学习的一项工具呢!

正规表示法与 Shell 在 Linux 当中的角色定位

说实在的,我们在学数学的时候,一个很重要、但是粉难的东西是一定要‘背’的, 那就是九九乘法表,背成功了之后,未来在数学应用的路途上,真是一帆风顺啊! 这个九九乘法表我们在小学的时候几乎背了一整年才背下来,并不是这么好背的呢! 但他却是基础当中的基础!您现在一定受惠相当的多呢 ^_^! 而我们谈到的这个正规表示法,与前一章的 BASH shell 就有点像是数学的九九乘法表一样,是 Linux 基础当中的基础,虽然也是最难的部分, 不过,如果学成了之后,一定是‘大大的有帮助’的!这就好像是金庸小说里面的学武难关, 任督二脉,打通任督二脉之后,武功立刻成倍成长!所以啦, 不论是对于系统的认识与系统的管理部分,他都有很棒的辅助啊!请好好的学习这个基础吧! ^_^

延伸的正规表示法

正规表示法除了简单的一组字串处理之外,还可以作群组的字串处理, 例如进行搜寻 VBird 或 netman 或 lman 的搜寻,注意,是‘或(or)’而不是‘和(and)’的处理, 此时就需要延伸正规表示法的帮助啦!藉由特殊的 ( 与 | 等字元的协助, 就能够达到这样的目的!好啦!清清脑门,咱们用功去啰!
Tips:
有一点要向大家报告的,那就是:‘正规表示法与万用字元是不一样的东西!’ 这很重要喔!因为万用字元 (wildcard) 所代表的意义与正规表示法并不相同~ 要分的很清楚才行喔!所以,学习本章,请将前一章 bash 的万用字元意义先忘掉吧! 
阅读(1224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~