与正则表达式的第一次亲密接触

Linux文本处理三剑客

  • grep:文本过滤(模式:psttern)工具

    grep,egrep,fgrep (不支持正则表达式搜索)

  • sed:stream editor,文本编辑工具

  • awk:Linux上的实现gawk,文本报告生成器

下面就先谈一谈:grep及正则表达式;egrep及扩展的正则表达式

grep

  • grep:Goobal search REgular expression and Print out the line

    作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行

    模式:用正则表达式字符及文本字符所编写的过滤条件

grep命令选项
  • –color=auto: 对匹配到的文本着色显示
  • -v: 显示不被pattern匹配到的行
  • -i: 忽略字符大小写
  • -n:显示匹配的行号
  • -c: 统计匹配的行数
  • -o: 仅显示匹配到的字符串
  • -q: 静默模式,不输出任何信息
  • -A #: after, 后#行
  • -B #: before, 前#行
  • -C #:context, 前后各#行
  • -e:实现多个选项间的逻辑or关系 grep –e ‘cat ’ -e ‘dog’ file
  • -w:匹配整个单词
  • -E:使用ERE
  • -F:相当于fgrep,不支持正则表达式

正则表达式

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

基本正则表达式元字符
元字符 定义
^ 位置锚定:行首
$ 位置锚定:行尾
. 任意单一字符
[ ] [ ]内任意单一字符
[^] 除[ ]内任意单一字符
* *前面字符重复不确定次数
+ +前面字符重复一次以上不确定次数
? ?前面字符重复0或1次
\ 转义符
.* 任意长度字符
{n} 前面字符重复n次
{n,} 前面字符重复n次以上
{m,n} 前面字符重复m次和n次之间
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即A-Z,a-z
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 水平空白字符(空格和制表符)
[:space:] 所有水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格,删除,警铃…)
[:digit:] 十进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
[:xdigit:] 十六进制数字

egrep

  • egrep = grep -E
  • egrep [OPTIONS] PATTERN [FILE…]
扩展的正则表达式的元字符
元字符 定义
. 任意单个字符
[ ] 指定范围的字符
[^] 不在指定范围的字符
* 匹配前面字符任意次
? 0或1次
+ 1次或多次
{m} 匹配m次
{m,n} 匹配至少m次,之多n次
^ 位置锚定:行首
$ 位置锚定:行尾
<,\b 位置锚定:词首
>,\b 位置锚定:词尾
( ) 分组
\1,\2 后向引用
学之前是拒绝的,学之后是懵逼的。

原创文章,作者:XIAJIDONG,如若转载,请注明出处:http://www.178linux.com/72678

(0)
上一篇 2017-04-06 20:12
下一篇 2017-04-06 23:28

相关推荐

  • Iptables基础

       Firewall:防火墙,工作于主机或网络的边缘处,对于进出本主机或网络的报文根据事先定义好的检查规则左匹配检测,对于能够被规则所匹配到的报文进行相应的处理的组件。   防火墙可分为:硬件防火墙,在硬件级别实现部分功能的防火墙;软件防火墙,应用软件处理逻辑运行于通用硬件平台之上的防火墙;主机防火墙,服务范围为当前主机;网络…

    2017-06-19
  • 时间、screen、echo等——Linux基本命令(5)

    1.     时间 (1)查询时间: date          +%F  年月日          +%T  时分秒  &nbs…

    2017-07-13
  • 在马哥学习linux第一天的感受

         来马哥教育好几天了,昨天算是正式开始,在昨天早上,举行了开班典礼,各位老师助教为我们介绍了在马哥教育进行培训的相关注意事项,下午进行了两场测试,首先有一个摸底测试,不得不说我真的是太菜了,除了一些比较简单的题目我还有些把握,相当一部分我都是似曾相识,但是也不是很确定,还有很大一部分我根本听都没听说过,看到别人都写的满满…

    Linux干货 2017-07-11
  • 用户组和权限管理相关作业

    1创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser     [root@ali ~]# useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/test…

    Linux干货 2016-08-02
  • #招聘福利#深圳云戈科技有限公司广州分公司/运维工程师/广州/招聘3人

    深圳云戈科技有限公司广州分公司/运维工程师/广州 招聘人数:3人 职位名称:运维工程师 岗位职责:负责大型数据处理系统、交易系统的维护工作。包括系统调优、数据库调优、系统版本升级、系统事件             处理、系统监控与巡检、数据分析与修复、实施应急方案、参数配置、系统扩容与部署、维护报告…

    Linux干货 2016-03-28
  • N23_第六周

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;:%s/^[[:blank:]]\+.*/\0#/g 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;:%s/^[[:space:]]\+/…

    Linux干货 2017-02-28

评论列表(1条)

  • renjin
    renjin 2017-04-12 11:30

    详细介绍了正则表达式的知识点,内容写的很不错,排版也很好