使用规则表达式要养成良好的习惯,就是在匹配模式的两端加上‘’。这样和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-Z]ANPATH /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 ttt

  t? 匹配0个或1个t 如 t 或 ‘ ’

  “create | stream “ 和两种模式的任一种进行匹配

  重点回顾

  • shell文件匹配字符和规则表达式的区别

  shell文件匹配字符是用于匹配文件名

  正规表示法RE的用途主要是用来做为『搜寻』字符串之用,匹配的文件里面的内容和用来过滤特殊讯息等用途;

  • 由于严谨度的不同,正规表示法之上还有更严谨的延伸正规表示法;

  • 正规表示法的处理方式,经常是以『整行』或称为『整段』来进行处理的;

  • grep 与 egrep 在正规表示法里面是很常见的两支程序,其中, egrep 可以用不同的模式去匹配,以及支持更严谨的正规表示法的语法。

转载于:https://www.cnblogs.com/fly-fish/archive/2011/03/11/1981655.html

Linux下正则表达式和grep命令的使用相关推荐

  1. linux下find、grep命令详解

    grep命令 格式:grep 参数 要查内容 路径 常用参数: -r:递归  -n:显示行号   -i:忽略大小写  -c:匹配到的行数  -w:全词匹配  -v:显示不包含匹配文本的所有行 递归搜索 ...

  2. linux下ps与grep命令的相关用法

      1.程序与进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序.什么是进程呢?进程就是运行中的程序,是程序的最小执行单元. 一个运行着的程序,可能有多个进程.比如 LinuxS ...

  3. linux paste 变量,Linux下的paste合并命令详解

    paste单词意思是粘贴.该命令主要用来将多个文件的内容合并,与cut命令完成的功能刚好相反. 粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同.paste将按行将不同文件行信息放在一 ...

  4. linux命令grep如何使用,Linux下如何使用grep搜索文本

    Linux下如何使用grep搜索文本 2018-11-30 一.什么是grep grep是一种文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep是几个单词的缩写,g(globa ...

  5. linux命令grep和find怎么用,Linux下find和grep常用命令及区别介绍

    在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区别的. 区别: (1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空 ...

  6. 正则表达式(grep命令,egrep命令,sed命令,awk命令,sort工具,uniq工具)

    文章目录 正则表达式 基础正则表达式:grep命令 查找行首"^"与行尾字符"$ 查找连续字符范围{} 元字符总结 正则表达式总结 扩展正则表达式 egrep命令 sed ...

  7. linux find 循环查找,Linux下的find查找命令

    Linux下的查找命令有:which(查看可执行文件的位置),whereis(查看指定文件的位置),locate(配合数据库查找指定文件的内容).find(在磁盘上查找文件).grep(使用正则表达式 ...

  8. Linux下Crontab定时执行命令

    Linux下Crontab定时执行命令 目录 Crontab概述及安装 Crontab规则 常见例子 1. Crontab概述及安装 1. Crontab指令是Linux下执行定时任务的一个命令. 2 ...

  9. linux查代替命令,Linux下查/删/替 命令(转)

    ▪查看某目录下所有文件的个数: [root@localhost1 opt]# ls -l |grep "^-"|wc -l ▪查看某目录下所有文件的个数,包括子目录里面的: [ro ...

最新文章

  1. HarmonyOS 实现跑马灯效果
  2. 2017年云计算的6大趋势
  3. First Week :Linux系统学习
  4. 【C#学习】delegate(委托) 和 event(事件)
  5. C语言socket accept()函数(提取出所监听套接字的等待连接队列中第一个连接请求,创建一个新的套接字,并返回指向该套接字的文件描述符)
  6. jni c运行java字符串,通过JNI将C ++字符串发送到Java
  7. 模型部署到移动端_谷歌开源 MobileNetV3:新思路 AutoML 改进计算机视觉模型移动端...
  8. 二元一次函数最值问题_初二上学期,一次函数方案设计最值问题,两类题目解题思路不一样...
  9. 怎么修改监控服务器的密码,服务器状态监控怎么设置密码
  10. 三菱fx编程手册_三菱FX串口PLC远程编程调试流程
  11. VMare Workstation 12 安装 AsteriskNow freePBX
  12. 我不是来约架,我只是请他们说几句实话——QCon上海2015编程语言专题前瞻
  13. 《天下强汉》3、强汉骄子,双星闪耀——卫青霍去病的华美人生
  14. mysql 如何避免间隙锁_mysql 间隙锁
  15. springboot实现微信退款
  16. 为什么正定矩阵等于转置_线性代数28——对称矩阵及正定矩阵,正定性
  17. U盘不能复制超过4G的文件解决方法
  18. 信息加密技术——对称密码体制
  19. android系统可以识别NTFS格式吗,安卓手机支持ntfs格式的储存卡吗
  20. 解决D-LINK DI 504路由器上网掉线问题

热门文章

  1. intellij idea maven dependency自动补全
  2. 如何在WIN7上添加磁盘
  3. 对 makefile 中 .NOTPARALLE 的学习体会
  4. kqueue epoll 边界触发模式的网络编程模型
  5. 黄聪:主目录安装Wordpress,根目录安装Discus,httpd.ini如何写?
  6. 上下两个x轴_点胶机:3轴,4轴,5轴,你懂了吗?
  7. AWS — AWS VPC 虚拟专用云
  8. 5G NGC — CAPIF 网络能力开放框架
  9. Linux 操作系统原理 — 文件系统 — 管理与优化
  10. HTTP协议学习笔记