grep、正则表达式

grep、正则表达式

  • grep:文本过滤(模式:pattern)工具
    作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。
    模式:由正则表达式字符及文本字符所编写的过滤条件。
  • 正则表达式:由一类特殊字符及文本所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能。
    正则表达式分为两类:基本正则表达式、扩展正则表达式
  • grep工具支持基本正则表达式,egrep支持扩展正则表达式,fgrep快速搜索,不支持正则。

grep

  • grep [OPTIONS] PATTERN [FILE…]
    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]
    –color==auto 高亮显示匹配到的字符串
    -o 仅显示匹配到的字符串
    -v 取反、显示不能被pattern匹配到的行
    -i 忽略字符的大小写
    -n 显示行号
    -c 显示统计到的行数,等同于wc -l
    -q 静默输出 只关心命令的执行结果 不关心输出结果
    -e 指定多个条件,条件是或的关系
    -w 匹配整个单词
    -A 后几行
    -B 前几行
    -C 前后几行 查看日志 搜索关键字排查错误的时候
    -E === egrep 支持扩展的正则表达式
    -F === fgrep 不支持正则表达式

基本正则表达式

  • 字符匹配
    . :匹配任意单个字符
    [] :匹配指定范围内的任意单个字符
    [^] :匹配指定范围外的任意单个字符
    以上[]中的范围有以下几种表示方法:

    • [:alnum:] 所有的数字和字符
      [:alpha:] 所有的字母(不区分大小写)
      [:lower:] 小写字母
      [:upper:] 大写字母
      [:space:] 专门匹配空格
      [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
      [:digit:] 十进制数字 ;[:xdigit:]十六进制数字
      [:graph:] 可打印的非空白字符
      [:print:] 可打印字符
      [:punct:] 标点符号
  • 次数匹配
    用于在要指定次数的字符后面,用于前面的字符要出现的次数:

    *:匹配前面的字符任意次,0 到无穷次
    注:默认情况下,正则表达式是工作在贪婪模式下,能匹配多少就匹配多少
    .* 任意字符出现任意次 
    a* a字符出现任意次 
    \? 匹配前面的字符出现0次或者1次 
    \+ 匹配前面的字符至少1次 
    \{n\} 前面的字符出现n次 
    \{m,n\}匹配前面的字符出现m到n次,m,n是一个范围 
    \{,n\}匹配前面的字符最多出现n 
    \{m,\}匹配前的字符至少出现m次
    \ 转义符

  • 位置锚定 
    ^ 锚定行首,用于模式的最左侧
    $ 锚定行尾,用于模式的最右侧

    ^$ 匹配空行的
    ^[[:space:]] 行首是空白的字符
    ^[[:space:]]*$ 也是 空行
    ^a 以a开头的行
    b$ 以b结束的行
    ^a.*b$ 以a开头 中间任意字符 以b结尾的行
    ^a.*[[:space:]]\{3\}.*b$ a开头跟任意字符,中间出现三次空格再跟任意字符 以b结尾的行
    ^# 以#开头的行

    \b \b 匹配词首和词尾 ;\bPATTERN\b
    \< > 匹配词首和词尾 ;\<PATTERN\>

  • 分组 \(\)
    将一个或多个字符捆绑在一起,当做一个整体进行处理,符号:()
    (xy)*ab 表示xy这个整体可以出现任意次`
    注:1、分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式:\1,\2,\3, …
    2、后向引用:引用前面的分组括号中的模式所匹配的字符,而非模式本身

  • 或者 \|
    a \| b
    C \| cat

扩展正则表达式

  • grep -E ‘PATTERN’ FILE…
    egrep ‘PATTERN’ FILE…

  • 字符匹配
    . :匹配任意单个字符
    [] :匹配指定范围内的任意单个字符
    [^] :匹配指定范围外的任意单个字符
    以上[]中的范围有以下几种表示方法:

    • [:alnum:] 所有的数字和字符
      [:alpha:] 所有的字母(不区分大小写)
      [:lower:] 小写字母
      [:upper:] 大写字母
      [:space:] 专门匹配空格
      [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
      [:digit:] 十进制数字 ;[:xdigit:]十六进制数字
      [:graph:] 可打印的非空白字符
      [:print:] 可打印字符
      [:punct:] 标点符号
  • 次数匹配
    用于在要指定次数的字符后面,用于前面的字符要出现的次数:

    *:匹配前面的字符任意次,0 到无穷次
    注:默认情况下,正则表达式是工作在贪婪模式下,能匹配多少就匹配多少
    .* 任意字符出现任意次 
    ? 匹配前面的字符出现0次或者1次 
    + 匹配前面的字符至少1次 
    {n} 前面的字符出现n次 
    {m,n}匹配前面的字符出现m到n次,m,n是一个范围 
    {,n}匹配前面的字符最多出现n 
    {m,}匹配前的字符至少出现m次

  • 位置锚定 
    ^ 锚定行首,用于模式的最左侧
    $ 锚定行尾,用于模式的最右侧

    ^$ 匹配空行的
    ^[[:space:]] 行首是空白的字符
    ^[[:space:]]*$ 也是 空行
    ^a 以a开头的行
    b$ 以b结束的行
    ^a.*b$ 以a开头 中间任意字符 以b结尾的行
    ^a.*[[:space:]]\{3\}.*b$ a开头跟任意字符,中间出现三次空格再跟任意字符 以b结尾的行
    ^# 以#开头的行

    \b \b 匹配词首和词尾 ;\bPATTERN\b
    \< > 匹配词首和词尾 ;\<PATTERN\>

  • 分组 ()
    将一个或多个字符捆绑在一起,当做一个整体进行处理,符号:()
    (xy)*ab 表示xy这个整体可以出现任意次

  • 或者 |
    a | b
    C | cat

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

(0)
ss
上一篇 2017-04-06
下一篇 2017-04-06

相关推荐

  • iptables 补充本

    浅谈iptables一 什么是iptablesiptables 是工作在内核之上的netfilter框架的前端工具(iptables是netfilter的管理工具这样说也不为过)Firewall:隔离工具,工作于主机或网络的边缘处,对经由的报文根据预先定义的规则(识别标准)进行检测,对于能够被规则匹配到的报文实行某种预定义的处理机制的一套组件; 硬…

    Linux干货 2017-05-15
  • 管道重定向笔记作业

      标准i/o和管道 Vim f1 [root@centos7~]#]ps aux|grep vim root      10967(进程编号)  0.1  0.4 151196  4828 pts/0    S+   11:10   0:00 vim f1 root      11028  0.0  0.0 112660   968 pts/1 …

    Linux干货 2017-11-20
  • 利用DNS和SAMBA实现web站点的简单高可用

    本文通过DNS绑定两台主机的IP地址到一个URL,然后后台samba服务器提供站点文件,此处以wordpress为例。这样当有一台服务器httpd服务出现故障的时候不至于造成站点无法访问,而且站点数据和mysql数据库数据位于后台samba服务器,另一台服务器直接从samba服务器获取站点文件和数据库数据,不会造成数据的不一致。 一、实验环境: 三台主机ip…

    2017-06-06
  • Linux系统的磁盘管理

    linux磁盘及文件系统管理 磁盘分区及文件系统管理 RAID设备 LVM: 磁盘的动态编辑管理 CPU, memory(RAM), I/O I/O设备: Disks, Ethercard (网卡) Disks: 实现持久存数数据 接口类型: IDE(ata): 并口  理论速度: 133MB/s SCSI: 并口 640MB/s SATA: 串口…

    Linux干货 2016-08-29
  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp/ [root@localho…

    Linux干货 2016-08-15
  • Centos 7&6分布式lamp平台

    Centos 7&6分布式lamp平台 Centos 7&6分布式lamp平台 一、环境介绍 lamp的实现方式 本文安装方式 二、Centos 7 分布式lamp平台,module方式 安装httpd和php xcache phpMyAdmin wordpress https的phpMyAdmin 环境规划 主机2配置mariadb 主机1…

    Linux干货 2016-04-25