正则表达式是一种字符模式,用于在查找过程中匹配制定的字符。

元字符通常在Linux中分为两类:Shell元字符,由Linux Shell进行解析;
正则表达式元字符,由vi/grep/sed/awk等文本处理工具进行解析;
正则表达式一般以文本行进行处理,在进行下面实例之前,先为grep命令设置--color参数:

  1. class="">alias grep='grep --color=auto'

这样每次过滤出来的字符串都会带色彩了。

在开始之前还需要做一件事情,就是创建一个测试用的re-file文件,内容如下:

  1. class="">$ cat re-file
  2. I had a lovely time on our little picnic.
  3. Lovers were all around us. It is springtime. Oh
  4. love, how much I adore you. Do you know
  5. the extent of my love? Oh, by the way, I think
  6. I lost my gloves somewhere out in that field of
  7. clover. Did you see them?  I can only hope love.
  8. is forever. I live for you. It's hard to get back in the
  9. groove.
  1. class="">$ cat linux.txt
  2. Linux is a good 
  3. god assdxw bcvnbvbjk
  4. greatttttt  wexcvxc
  5. operaaaating  dhfghfvx
  6. gooodfs awrerdxxhkl
  7. gdsystem awxxxx
  8. glad
  9. good
正则表达式元字符

特殊的元字符

扩展的正则表达式

实操
匹配以love开头的所有行
  1. class="">$ grep '^love' re-file
  2. love, how much I adore you. Do you know
匹配love结尾的所有行
  1. class="">$ grep 'love$' re-file
  2. clover. Did you see them?  I can only hope love.
匹配以l开头,中间包含两个字符,结尾是e的所有行
  1. class="">$ grep 'l..e' re-file
  2. I had a lovely time on our little picnic.
  3. love, how much I adore you. Do you know
  4. the extent of my love? Oh, by the way, I think
  5. I lost my gloves somewhere out in that field of
  6. clover. Did you see them?  I can only hope love.
  7. is forever. I live for you. It's hard to get back in the
匹配0个或多个空行,后面是love的字符
  1. class="">$ grep ' *love' re-file
  2. I had a lovely time on our little picnic.
  3. love, how much I adore you. Do you know
  4. the extent of my love? Oh, by the way, I think
  5. I lost my gloves somewhere out in that field of
  6. clover. Did you see them?  I can only hope love.
匹配love或Love
  1. class="">$ grep '[Ll]ove' re-file  # 对l不区分大小写
  2. I had a lovely time on our little picnic.
  3. Lovers were all around us. It is springtime. Oh
  4. love, how much I adore you. Do you know
  5. the extent of my love? Oh, by the way, I think
  6. I lost my gloves somewhere out in that field of
  7. clover. Did you see them?  I can only hope love.
匹配A-Z的字母,其次是ove
  1. class="">$ grep '[A-Z]ove' re-file
  2. Lovers were all around us. It is springtime. Oh
匹配不在A-Z范围内的任何字符行,所有的小写字符
  1. class="">$ grep '[^A-Z]' re-file
  2. I had a lovely time on our little picnic.
  3. Lovers were all around us. It is springtime. Oh
  4. love, how much I adore you. Do you know
  5. the extent of my love? Oh, by the way, I think
  6. I lost my gloves somewhere out in that field of
  7. clover. Did you see them?  I can only hope love.
  8. is forever. I live for you. It's hard to get back in the
  9. groove.
匹配love
  1. class="">$ grep 'love\.' re-file
  2. clover. Did you see them?  I can only hope love.
匹配空格
  1. class="">$ grep '^$' re-file
匹配任意字符
  1. class="">$ grep '.*' re-file
  2. I had a lovely time on our little picnic.
  3. Lovers were all around us. It is springtime. Oh
  4. love, how much I adore you. Do you know
  5. the extent of my love? Oh, by the way, I think
  6. I lost my gloves somewhere out in that field of
  7. clover. Did you see them?  I can only hope love.
  8. is forever. I live for you. It's hard to get back in the
  9. groove.
前面o字符重复2到4次
  1. class="">$ grep 'o\{2,4\}' re-file
  2. groove.
重复o字符至少2次
  1. class="">$ grep 'o\{2,\}' re-file
  2. groove.
重复0字符最多2次
  1. class="">$ grep 'o\{,2\}' re-file
  2. I had a lovely time on our little picnic.
  3. Lovers were all around us. It is springtime. Oh
  4. love, how much I adore you. Do you know
  5. the extent of my love? Oh, by the way, I think
  6. I lost my gloves somewhere out in that field of
  7. clover. Did you see them?  I can only hope love.
  8. is forever. I live for you. It's hard to get back in the
  9. groove.
重复前一个字符一个或一个以上
  1. class="">$ egrep "go+d" linux.txt
  2. Linux is a good
  3. god assdxw bcvnbvbjk
  4. gooodfs awrerdxxhkl
  5. good
  6. #####0个或者一个字符
  7. ansheng@Ubuntu:/tmp$ egrep "go?d" linux.txt
  8. god assdxw bcvnbvbjk
  9. gdsystem awxxxx

或,查找多个字符串

  1. class="">$ egrep "gd|good" linux.txt
  2. Linux is a good
  3. gdsystem awxxxx
  4. good
分组过滤匹配
  1. class="">$ egrep "g(la|oo)d" linux.txt
  2. Linux is a good
  3. glad
  4. good

3分钟搞定Linux系统正则表达式的更多相关文章

  1. 五分钟搞定 Linux 文档全部知识,就看这篇文章

    作者:无痴迷,不成功 来源:见文末 写在前面 我们都知道Linux是一个支持多用户.多任务的系统,这也是它最优秀的特性,即可能同时有很多人都在系统上进行工作,所以千万不要强制关机,同时,为了保护每个人 ...

  2. 五分钟搞定Linux容器

    [TechTarget中国原创] Linux容器针对特定工作负载提供了全新的灵活性与可能性.存在很多解决方案,但是没有一个解决方案能够像systemd容器那样进行快速部署.给我五分钟,本文将介绍如何使 ...

  3. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)

    前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...

  4. zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》

    本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图   zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...

  5. windows+mysql集群搭建-三分钟搞定集群

    注:本文来源:  陈晓婵   <  windows+mysql集群搭建-三分钟搞定集群   > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...

  6. 转载-30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

    原文:30分钟搞定后台登录界面(103个后台PSD源文件.素材网站)   目录 一.界面预览 二.PSD源文件预览 三.工具分享 四.资源说明 五.素材下载网站 六.下载 去年八月时要做一个OA系统为 ...

  7. 【转】让你10分钟搞定Mac--最简单快速的虚拟安装

    文章出处:让你10分钟搞定Mac--最简单快速的虚拟安装http://bbs.itheima.com/thread-106643-1-1.html (出处: 黑马程序员训练营论坛) 首先说明一下. 第 ...

  8. 一分钟搞定AlloyTouch图片轮播

      一分钟搞定AlloyTouch图片轮播 轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹.除了一般的竖向滚动,A ...

  9. 五分钟搞定Go.js

    五分钟搞定Go.js  1.基于html5~因为Go.js是一个依赖于HTML5特性的JavaScript库,所以需要确保您的页面声明它是一个HTML5文档,当然需要加载库 <!DOCTYPE ...

随机推荐

  1. ORA-01591 锁定已被有问题的分配事务处理--解决方法(转)

    转载自love wife & love life —Roger 的Oracle技术博客 本文链接地址: ORA-01591: lock held by in-doubt distributed ...

  2. [多问几个为什么]为什么匿名内部类中引用的局部变量和参数需要final而成员字段不用?(转)

    昨天有一个比较爱思考的同事和我提起一个问题:为什么匿名内部类使用的局部变量和参数需要final修饰,而外部类的成员变量则不用?对这个问题我一直作为默认的语法了,木有仔细想过为什么(在分析完后有点印象在 ...

  3. AutoMapper实际项目运用

    AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 配置AutoMapper映射规则 AutoMapper是基于约定的,因此在实用映射之前 ...

  4. Linux网络编程socket选项之SO_LINGER,SO_REUSEADDR

    from http://blog.csdn.net/feiyinzilgd/article/details/5894300 Linux网络编程中,socket的选项很多.其中几个比较重要的选项有:SO ...

  5. MTK65XX平台充电调试总结

    MTK平台充电调试总结 摘要:调试电池的充放电管理,首先须要深入了解锂电池的电池原理和特点.充放电特性以及主要的电池安全问题.然后须要对MTK的电池管理驱动程序有深入的了解.理解电池充放电算法的基本原 ...

  6. delphi teechrt中TChart 一些属性设置

    把图片设置成黑白 2.设置颜色

  7. 淡淡理解下AngularJS中的module

    在AngularJS中module是一个核心的存在,包括了很多方面,比如controller, config, service, factory, directive, constant, 等等. 在 ...

  8. Windows Phone本地数据库(SQLCE):2、LINQ to SQL(翻译)(转)

    首先.要说到的是,windows phone 7.1上基本的数据库功能是SQL Compact关于Mango的一个实现,使用linq to sql访问存储在数据库上的数据.   1.LINQ to S ...

  9. BI 可视化

    1. Blackbird: Open Source JavaScript Logging Utility Blackbird 是一款非常酷的 JavaScript 调试工具,带有一个漂亮的界面显示和过 ...

  10. docker查看容器的网络ip

    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id 可直 ...