鸟哥正Word格式文档下载.docx
- 文档编号:8149668
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:32
- 大小:42.51KB
鸟哥正Word格式文档下载.docx
《鸟哥正Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《鸟哥正Word格式文档下载.docx(32页珍藏版)》请在冰点文库上搜索。
7.2档案打印准备:
pr
8.重点回顾
9.参考资源
10.本章习题练习
--------------------------------------------------------------------------------
前言
约略了解了Linux的基本指令(Shell)并且熟悉了vi之后,相信您对于敲击键盘与指令比较不陌生了吧?
?
接下来,底下要开始介绍一个很重要的观念,那就是所谓的『正规表示法』啰!
什么是正规表示法
任何一个有经验的系统管理员,都会告诉您:
『正规表示法真是挺重要的!
』为什么很重要呢?
因为日常生活就使用的到啊!
举个例子来说,在您日常处理文书作业时,应该会常常使用到『搜寻/取代』等等的功能吧?
这些举动要作的漂亮,就是正规表示法的工作了!
简单的说,正规表示法就是处理字符串的方法,他是以行为单位,来进行字符串的处理行为,他透过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/取代某特定字符串的处理程序!
举例来说,我要找到VBird或Vbird这个字样,但是不要其它的字符串,该如何办理?
如果在没有正规表示法的环境中(例如MSword),您或许就得要使用忽略大小写的办法,或者是分别以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当中的角色定位
说实在的,我们在学数学的时候,一个很重要、但是粉难的东西是一定要『背』的,那就是九九表,背成功了之后,未来在数学应用的路途上,真是一帆风顺啊!
这个九九表我们在小学的时候几乎背了一整年才背下来,并不是这么好背的呢!
但他却是基础当中的基础!
您现在一定受惠相当的多呢^_^!
而我们谈到的这个正规表示法,与前一章的BASHshell就有点像是数学的九九表一样,是Linux基础当中的基础,虽然也是最难的部分,不过,如果学成了之后,一定是『大大的有帮助』的!
这就好像是金庸小说里面的学武难关,任督二脉,打通任督二脉之后,武功立刻成倍成长!
所以啦,不论是对于系统的认识与系统的管理部分,他都有很棒的辅助啊!
请好好的学习这个基础吧!
^_^
延伸的正规表示法
正规表示法除了简单的一组字符串处理之外,还可以作群组的字符串处理,例如进行搜寻VBird或netman或lman的搜寻,注意,是『或(or)』而不是『和(and)』的处理,此时就需要延伸正规表示法的帮助啦!
藉由特殊的(与|等字符的协助,就能够达到这样的目的!
好啦!
清清脑门,咱们用功去啰!
Tips:
有一点要向大家报告的,那就是:
『正规表示法与万用字符是不一样的东西!
』这很重要喔!
因为万用字符(wildcard)所代表的意义与正规表示法并不相同~要分的很清楚才行喔!
所以,学习本章,请将前一章bash的万用字符意义先忘掉吧!
基础正规表示法
既然正规表示法是处理字符串的一个标准表示方式,他需要支持的工具程序来辅助,所以,我们这里就先介绍一个最简单的字符串撷取功能的工具程序,那就是grep啰!
在介绍完grep的基本功能之后,就进入正规表示法的特殊字符的处理能力了。
以grep撷取字符串
既然要使用grep当然就得要先了解一下grep的语法啰~
[root@testroot]#grep[-acinv]'
搜寻字符串'
filename
参数说明:
-a:
将binary档案以text档案的方式搜寻数据
-c:
计算找到'
的次数
-i:
忽略大小写的不同,所以大小写视为相同
-n:
顺便输出行号
-v:
反向选择,亦即显示出没有'
内容的那一行!
范例:
[root@testroot]#grep'
root'
/var/log/secure
将/var/log/secure这个档案中有root的那一行秀出来
[root@testroot]#grep-v'
若该行没有root才将数据秀出来到屏幕上!
[root@testroot]#last|greproot
若该行有root才将数据秀出来到屏幕上!
grep是一个很常见也很常用的指令,他最重要的功能就是进行字符串数据的比对,然后将符合使用者需求的字符串打印出来。
需要说明的是『grep在数据中查寻一个字符串时,是以"
整行"
为单位来进行数据的撷取的!
』也就是说,假如一个档案内有10行,其中有两行具有你所搜寻的字符串,则将那两行显示在屏幕上,其它的就丢弃了!
而grep除了可以进行档案的资料搜寻之外,也常常被应用在input/output的数据处理当中,例如常见的管线命令(pipe)就可以常常见到他的踪影!
以上面表格中的例子来看,我们可以发现前两个例子是查寻档案的内容,有没有加上-v所显示出来的结果是『相反的!
』,而第三个例子则是以pipe的功能进行数据的处理的喔!
好了,我们就开始以grep来进行正规表示法的简易说明吧!
我们先以底下这个档案来作为范例:
[root@testroot]#viregular_express.txt
"
OpenSource"
isagoodmechanismtodevelopprograms.
appleismyfavoritefood.
Footballgameisnotusefeetonly.
thisdressdoesn'
tfitme.
However,thisdressisabout$3183dollars.
GNUisfreeairnotfreebeer.
Herhairisverybeauty.
Ican’tfinishthetest.
Oh!
Thesouptastegood.
motorcycleischeapthancar.
Thiswindowisclear.
thesymbol'
*'
isrepresentedasstart.
Mygod!
Thegdsoftwareisalibraryfordraftingprograms.
Youarethebestismeanyouaretheno.1.
Theworldisthesamewith"
glad"
.
Ilikedog.
googleisthebesttoolsforsearchkeyword.
goooooogleyes!
go!
go!
Let'
sgo.
#IamVBird
需要特别注意的是,上面这个档案鸟哥是在Windows的环境下编辑的,并且经过特殊处理过,因此,他虽然是纯文字文件,但是内含一些Windows环境下的软件常常自行加入的一些特殊字符,例如断行字符(^M)就是一例!
所以,您可以直接将上面的文字以vi储存成regular_express.txt这个档案,不过,比较建议直接点底下的连结下载:
http:
//linux.vbird.org/linux_basic/0330regularex/regular_express.txt
此外,因为不同的语系编码是不一样的,所以,您必须要将语系改成英文语系,才能够进行底下的测试,否则,可能会有显示的内容与底下的输出不符的状况喔!
修改语系的方法为:
[root@testroot]#LANG=en
[root@testroot]#LANGUAGE=en
好了,现在开始我们一个案例一个案例的来介绍吧!
例题一、搜寻特定字符串:
搜寻特定字符串很简单吧?
假设我们要从刚刚的档案当中取得the这个特定字符串,最简单的方式就是这样:
[root@testroot]#grep-n'
the'
regular_express.txt
8:
Ican'
tfinishthetest.
12:
15:
16:
18:
那如果想要『反向选择』呢?
也就是说,当该行没有'
这个字符串时,才显示在屏幕上,那就直接使用:
[root@testroot]#grep-vn'
您会发现,屏幕上出现的行列为除了8,12,15,16,18五行之外的其它行列!
接下来,如果您想要取得不论大小写的the这个字符串,则:
[root@testroot]#grep-in'
9:
14:
例题二、利用[]来搜寻集合字符
如果我想要搜寻test或taste这两个单字时,可以发现到,其实她们有共通的'
t?
st'
存在~这个时候,我可以这样来搜寻:
t[ae]st'
了解了吧?
其实[]里面不论有几个字符,他都谨代表某『一个』字符,所以,上面的例子说明了,我需要的字符串是『tast』或『test』两个字符串而已!
而如果想要搜寻到有oo的字符时,则使用:
oo'
1:
2:
3:
19:
但是,如果我不想要oo前面有g的话呢?
此时,可以利用在集合字符的反向选择[^]来达成
[^g]oo'
意思就是说,我需要的是oo,但是oo前面不能是g就是了!
仔细比较上面两个表格,妳会发现,第1,9行不见了,因为oo前面出现了g所致!
第2,3行没有疑问,因为foo与Foo均可被接受!
但是第18行明明有google的goo啊~别忘记了,因为该行后面出现了tool的too啊!
所以该行也被列出来~也就是说,18行里面虽然出现了我们所不要的项目(goo)但是由于有需要的项目(too),因此,是符合字符串搜寻的喔!
至于第19行,同样的,因为goooooogle里面的oo前面可能是o,例如:
go(ooo)oogle,所以,这一行也是符合需求的!
再来,假设我oo前面不想要有小写字符,所以,我可以这样写[^abcd....z]oo,但是这样似乎不怎么方便,由于小写字符的ASCII上编码的顺序是连续的,因此,我们可以将之简化为底下这样:
[^a-z]oo'
也就是说,当我们在一组集合字符中,如果该字符组是连续的,例如大写英文/小写英文/数字等等,就可以使用[a-z],[A-Z],[0-9]等方式来书写,那么如果我们的要求字符串是数字与英文呢?
呵呵!
就将他全部写在一起,变成:
[a-zA-Z0-9]
例如,我们要取得有数字的那一行,就这样:
[0-9]'
5:
这样对于[]以及[^]以及[]当中的-有了解了吗?
!
例题三、行首与行尾字符^$:
我们在例题一当中,可以查询到一行字符串里面有the的,那如果我想要让the只在行首列出呢?
这个时候就得要使用定位字符了!
我们可以这样做:
^the'
此时,就只剩下第12行,因为只有第12行的行首是the开头啊~此外,如果我想要开头是小写字符的那一行就列出呢?
可以这样:
^[a-z]'
4:
10:
如果我不想要开头是英文字母,则可以是这样:
^[^a-zA-Z]'
20:
注意到了吧?
那个^符号,在字符集合符号(括号[])之内与之外是不同的!
在[]内代表『反向选择』,在[]之外则代表定位在行首的意义!
要分清楚喔!
那如果我想要找出来,行尾结束为小数点(.)的那一行,该如何处理:
\.$'
11:
17:
googleisthebesttools
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 鸟哥正