linux expression文件,鸟哥的 Linux 私房菜 -- 正规表示法 (regular expression, RE) 与文件格式化处理...

约略了解了 Linux 的基本命令 (BASH) 并且熟悉了

vim 之后,相信你对於敲击键盘的打字与命令下达比较不陌生了吧?

接下来,底下要开始介绍一个很重要的观念,那就是所谓的『正规表示法

(Regular Expression)』罗!

f3175a394d98f5e34894be15487c88f2.png什么是正规表示法

任何一个有经验的系统管理员,都会告诉你:『正规表示法真是挺重要的!』

为什么很重要呢?因为日常生活就使用的到啊!举个例子来说,

在你日常使用 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 自己本身的万用字节而已。

f3175a394d98f5e34894be15487c88f2.png正规表示法对於系统管理员的用途

那么为何我需要学习正规表示法呢?对於一般使用者来说,由於使用到正规表示法的机会可能不怎么多,

因此感受不到他的魅力,不过,对於身为系统管理员的你来说,正规表示法则是一个『不可不学的好东西!』

怎么说呢?由於系统如果在繁忙的情况之下,每天产生的信息资讯会多到你无法想像的地步,

而我们也都知道,系统的『错误信息登录文件 (第十九章)』

的内容记载了系统产生的所有信息,当然,这包含你的系统是否被『入侵』的记录数据。

但是系统的数据量太大了,要身为系统管理员的你每天去看这么多的信息数据,

从千百行的数据里面找出一行有问题的信息,呵呵~光是用肉眼去看,想不疯掉都很难!

这个时候,我们就可以透过『正规表示法』的功能,将这些登录的资讯进行处理,

仅取出『有问题』的资讯来进行分析,哈哈!如此一来,你的系统管理工作将会

『快乐得不得了』啊!当然,正规表示法的优点还不止於此,等你有一定程度的了解之后,你会爱上他喔!

f3175a394d98f5e34894be15487c88f2.png正规表示法的广泛用途

正规表示法除了可以让系统管理员管理主机更为便利之外,事实上,由於正规表示法强大的字串处理能力,

目前一堆软件都支持正规表示法呢!最常见的就是『邮件服务器』啦!

如果你留意网际网络上的消息,那么应该不能发现,目前造成网络大塞车的主因之一就是『垃圾/广告信件』了,

而如果我们可以在服务器端,就将这些问题邮件剔除的话,用户端就会减少很多不必要的频宽耗损了。

那么如何剔除广告信件呢?由於广告信件几乎都有一定的标题或者是内容,因此,

只要每次有来信时,都先将来信的标题与内容进行特殊字串的比对,发现有不良信件就予以剔除!

嘿!这个工作怎么达到啊?就使用正规表示法啊!目前两大邮件服务器软件 sendmail 与 postfix

以及支持邮件服务器的相关分析软件,都支持正规表示法的比对功能!

当然还不止於此啦,很多的服务器软件都支持正规表示法呢!当然,

虽然各家软件都支持他,不过,这些『字串』的比对还是需要系统管理员来加入比对守则的,

所以啦!身为系统管理员的你,为了自身的工作以及用户端的需求,

正规表示法实在是很需要也很值得学习的一项工具呢!

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

说实在的,我们在学数学的时候,一个很重要、但是粉难的东西是一定要『背』的,

那就是九九乘法表,背成功了之后,未来在数学应用的路途上,真是一帆风顺啊!

这个九九乘法表我们在小学的时候几乎背了一整年才背下来,并不是这么好背的呢!

但他却是基础当中的基础!你现在一定受惠相当的多呢 ^_^!

而我们谈到的这个正规表示法,与前一章的 BASH

就有点像是数学的九九乘法表一样,是 Linux 基础当中的基础,虽然也是最难的部分,

不过,如果学成了之后,一定是『大大的有帮助』的!这就好像是金庸小说里面的学武难关:任督二脉!

打通任督二脉之后,武功立刻成倍成长!所以啦,

不论是对於系统的认识与系统的管理部分,他都有很棒的辅助啊!请好好的学习这个基础吧! ^_^

f3175a394d98f5e34894be15487c88f2.png延伸的正规表示法

唔!正规表示法还有分喔?没错喔!正规表示法的字串表示方式依照不同的严谨度而分为:

基础正规表示法与延伸正规表示法。延伸型正规表示法除了简单的一组字串处理之外,还可以作群组的字串处理,

例如进行搜寻 VBird 或 netman 或 lman 的搜寻,注意,是『或(or)』而不是『和(and)』的处理,

此时就需要延伸正规表示法的帮助啦!藉由特殊的『 ( 』与『 | 』等字节的协助,

就能够达到这样的目的!不过,我们在这里主力仅是介绍最基础的基础正规表示法而已啦!好啦!清清脑门,咱们用功去罗!

Tips:

有一点要向大家报告的,那就是:『正规表示法与万用字节是完全不一样的东西!』

这很重要喔!因为『万用字节 (wildcard) 代表的是 bash 操作介面的一个功能』,但正规表示法则是一种字串处理的表示方式!

这两者要分的很清楚才行喔!所以,学习本章,请将前一章 bash 的万用字节意义先忘掉吧!

老实说,鸟哥以前刚接触正规表示法时,老想著要将这两者归纳在一起,结果就是...错误认知一大堆~

所以才会建议您学习本章先忘记万用字节再来学习吧!c6c8a699da105a7ee4199140f0457f14.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值