Linux下正则表达式和grep命令的使用.doc_第1页
Linux下正则表达式和grep命令的使用.doc_第2页
Linux下正则表达式和grep命令的使用.doc_第3页
Linux下正则表达式和grep命令的使用.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux下正则表达式和grep命令的使用出处:互联网作者:佚名使用规则表达式要养成良好的习惯,就是在匹配模式的两端加上。这样和shell的文件通配符号做区别。正规表示法( Regular Exdivssion,RE )1 什么是正规表示法:什么是正规表示式 ( Regular Exdivssion, 底下简称 RE ) 呢?简单的说,在 Linux 的环境下,我们可以透过字符串以及一些特殊字符的辅助来进行文字的比对工作,好来让使用者筛选自己所需要数据。这些特殊的字符与搭配使用的工具,就构成了正规表示法的主轴!例如 /etc/rc.d/init.d 这个目录当中好了,如果你要找到一个文件内容含有 mail 这个字符串的文件名,要怎么搜寻呢?利用 grep 配合 mail 以及万用字符来搜寻所有的文件名grep mail /etc/rc.d/init.d/*2 正规表示法对于系统管理员的用途:对于系统管理员来说,正规表示法则是一个不可不学的好东西!由于系统如果在繁忙的情况之下,每天产生的讯息信息会多到你无法想象的地步,而 我们也都知道,系统的错误讯息登录文件 的内容记载了系统产生的所有讯息,当然,这包含你的系统是否被入侵的纪录数据。但是系统的数据量太大了,要系统管理员的 你每天去看这么多的讯息数据,想不疯掉都很难,这个时候,我们就可以透过正规表示法的功能,将这些登录的信息进行处理,仅取出错误的信息来进行分 析。3 正规表示法的广泛用途:除了系统管理员之外,一大堆的软件与设定都是支持正规表示法的,最常见的例子就是邮件服务器!您是否有常常收到电子邮件里最让人诟病 的广告信件呢?那如果我在 Server 端就将广告信件给剔除的话,客户端就会减少很多不必要的频宽损耗了对吧!那么如何剔除广告信件呢?由于广告信件几乎都有一定的标题或者是内容,因此,只要 每次有来信时,都先将来信的标题与内容进行特殊字符串的比对,使用正规表示法发现有不良信件就予以剔除!目前两大服务器软件sendmail 与 postfix 都支持正规表示法的比对功能!很多的服务器软件、以及套件都支持正规表示法。4 grep语法:root test /root # grep -acinv 搜寻字符串 filenames-list参数说明:-a :将 binary 文件以 text 文件的方式搜寻数据-c :计算找到 搜寻字符串 的次数-i :忽略大小写的不同,所以大小写视为相同-n :顺便输出行号-v :反向选择,亦即显示出没有 搜寻字符串 内容的那一行!范例:root test /root# grep root /var/log/secure搜索 /var/log/secure 这个文件中包含 root 的行root test /root# grep -v root /var/log/secure搜索没有 root 的行root test /root# grep A-ZANPATH /etc/man.config说明:grep 是一个很常见的指令,最重要的功能就是进行字符串数据的比对了,需要说明的是grep 在一个文件中查寻一个字符串时,他是以整行为单位来数据的撷取的!grep 是最简单的正规表示法搜寻指令之一,他并不支持一些更严谨的正规表示法内容,不过,已经相当的好用。例题一:找出这个文件里面含有 know 这个字符,并将行号列出来:注意,大小写是不一样的root test /root # grep -n know regexp.txt例题二:找出这个文件里面含有 * 这个字符,并将行号列出来:root test /root # grep -n * regexp.txt例题三:我要将所有 know 不论大小写都列出来,并列出行号:root test /root# grep -ni know regexp.txt注意:类似的指令还有egrep、awk、gawk、sed等,将在后面详细说明5 正规表示法的特殊字符(charaters)与 egrep 指令特殊字符 表示意义word 待搜寻的字符在行首word$ 待搜寻的字符在行尾. 匹配任何一个可能的字符 跳脱符号将特殊字符变成普通字符? 任何一个单一字符* 匹配模式中重复的字符list 列表中的字符range 列表中范围内的字符list 反向选择,与 list 相反range 反向选择,与 range相反n 与前一个相同字浮连续 n 个n,m 与前一个相同字浮连续 n-m 个请特别留意的是,正规表示法的特殊字符与一般在指令列输入指令的万用字符并不相同,例如,在万用字符当中, * 代表的是 0 无限多个字符的意思,但是在正规表示法当中, * 则是重复前一个字符的意思使用的意义并不相同,不要搞混了!例题:在 /etc 底下,只要含有 XYZ 三个字符的任何一个字符的那一行就列出来grep XYZ /etc/*例题:我想要知道在 /etc 里面,只要句首是 w-z 的就将他印出来?grep w-z /etc/*6 diff比较两个文件内容是否有不一致的指令!语法:root test /root # diff file1 file2范例:root test /root# diff index.htm index.html例子:ls l | grep d 查询子目录注意:使用规则表达式要养成良好的习惯,就是在匹配模式的两端加上。这样和shell的文件通配符号做区别。7 充分规则表达式专用字符符号 执行pattern1 | pattern2 逻辑或(patten) 对模式进行分组char+ 搜索前面字符的一个或者多个重复实例char? 搜索前面字符的一个或者0个实例例题:t+ 匹配一个或一个以上连续的t,如t tt tttt? 匹配0个或1个t 如 t 或 “create | stream “ 和两种模式的任一种进行匹配重点回顾 shell文件匹配字符和规则表达式的区别shell文件匹配字符是用于匹配文件名正规表示法RE的用途主要是用来做为搜寻字符串之用,匹配的文件里面的内容和用来过滤特殊讯息等用途

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论