文本三剑客之grep

文本编辑三剑客之grep

目录

  • 一、正则表达式
  • 二、grep:文本过滤器

一、正则表达式

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

  • 基本正则表达式:BRE
  • 扩展正则表达式:ERE

元字符的分类:

  • 字符匹配
  • 匹配次数
  • 位置锚定
  • 分组

(1)基本正则表达式元字符

1>字符匹配

  • . :匹配任意单个字符
  • [ ]:匹配范围内的单个字符
  • [^]:匹配指定范围外的任意字符
  • \:转义符,是特殊字符表示成本身的意思,而不是正则表达式的意思
  • 特定字符:和中括号的字符集合一块使用,比如: [[:digit:]]=[0-9]
    文本三剑客之grep

2>匹配次数

匹配次数用在要指定次数的字符后面,用于指定前面的字符要出现的次数。

  • *:匹配前面的字符任意次,包括0次。(贪婪模式:经可能长的匹配)
  • .*:任意长度的任意字符
  • \?:匹配前面的字符0或者1次(部分匹配就行,如a\?b,ab、aab、amnb都符合)
  • +:匹配前面的字符者少1次
  • {n}:匹配前面的字符n次
  • {m,n}:匹配前面的字符至少m次,至多n次
  • {,n}:匹配前面的字符至多n次
  • {n,}:匹配前面的字符至少n次

3>位置锚定

定位出现的位置

  • ^:行首锚定,用于模式最左侧
  • $: 行尾锚定,用于模式最右侧
  • ^pattern$:用于模式匹配整行

    • ^$:空白行
    • ^[[:space:]]$:空白行
  • \<或者\b:词首锚定,用于单词模式的左侧
  • \>或者\b:词尾锚定,用于单词模式右侧
  • \<pattern>:匹配整个单词

4>分组

分组: () 将 将 一个或多个字符捆绑在一起,当作一个整体进行处理,如:(root)+

  • 分组 括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, …
  • \1 表示从左侧起第一 个左括号以及与之匹配右括号之间的模式所匹配到 的字符
  • 后向引用:引用前面的分组括号中的模式所 匹配字符,而非模式本身
  • 示例 :

    \(string1\+\(string2\)*\)
    \1  :string1\+\(string2\)*
    \2  :string2

(2)扩展正则表达式的元字符

用法

egrep = grep -E
egrep [OPTIONS] PATTERN [FILE…]

1>字符匹配

  • . 任意单个字符
  • [] 指定范围的字符
  • [^] 不在指定范围的字符

2>次数匹配

  • *:匹配前面字符任意次
  • ?:0 或1次
  • +:1 次或多次
  • {m} :匹配m次 次
  • {m,n} :至少m ,至多n次

3>位置锚定

  • ^ : 行首
  • $ : 行尾
  • \<, \b : 语首
  • \>, \b : 语尾

4>分组

  • ()
    后向引用:\1, \2, …

5>或者

  • | :或者
  • 实例:

    a|b: a 或b
      C|cat: C 或cat
      (C|c)at:Cat 或cat

二、grep

根据模式搜索文本,并将符合模式的文本显示出来。
pattern(模式):文本字符和正则表达式组合而成的匹配条件

用法

grep [OPTIONS] PATTERN [FILE…]

选项

  • -i : 查找时忽略大小写
  • –color:显示颜色(Centos7是别名)
  • -v: 显示未被匹配到的行
  • -o:只显示匹配到的行
  • -e:实现多个选项间的逻辑关系or关系
  • -n:显示匹配的编号
  • -c:统计匹配的字符串
  • -q:静默模式,不输出任何信息
  • -w:整行匹配整个单词
  • -A #:after,匹配到字符的前边#行也输出到显示器上
  • -B #:before,匹配到字符的后边#行也输出到显示器上
  • -C #:context,匹配到字符的前后边各#行也输出到显示器上
  • -F:相当于使用fgrep,fgrep不支持正则表达式
  • -E:相当于egrep,egrep支持正则表达式

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

(0)
oranixoranix
上一篇 2017-03-26
下一篇 2017-03-26

相关推荐

  • 马哥教育网络班21期第六周作业

    详细总结VIM编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加# cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit :%s/^[[:space:]]\+/#/…

    Linux干货 2016-08-22
  • grep &&正则表达式&&通配,元字,转义符

    grep 基于正则表达式的查询 1正则表达式: 正则表达式是通过使用特殊的字符所编写的模式,一些字符不表示字符的表面意思,具有控制和通配的功能. 使用正则表达式进行匹配具有两种方法:一是通过使用特殊的元字符进行字符匹配;二是使用次数匹配。 一, 正则表达式的特殊字符(元字符) :  #建议再温习一下之前所学的统通配符,对比一下,防止混淆。 (1)元…

    Linux干货 2016-08-05
  • 关于文件查找和解压缩

                     文件查找和解压缩在文件系统上查找符合条件的文件,文件查找的工具有两个,locate 和find文件查找分为:          &nbs…

    系统运维 2016-08-18
  • 系统管理之系统安装及自动化安装

    概述:     上篇我们讨论了下关于Linux系统的启动流程和grub相关的内容,本篇将介绍一下Linux的系统安装相关的内容,具体分为:     1、系统安装程序anaconda的介绍     2、kickstart文件的介绍 &nbsp…

    Linux干货 2016-09-16
  • 优云软件老司机:如何让运维操作更轻松、高效

    讲师介绍 庞辉富 •广通软件技术总监 •拥有10多年IT运维管理软件研发经验 •致力于自动化运维解决方案的研究和推广 •主导研发的产品广泛应用于海关、公安、能源等多个行业 技术发展给运维带来的挑战 当前的IT建设在这些新技术的演进下,我们看到的是呈现“双态IT”特征。Gartner也提出双模IT理论,与现在谈的双态IT是异曲同工的,不再是一种单纯的形态,而是…

    系统运维 2017-01-09
  • LINUX 下正确关机方法

    Linux下正确关机方法 Table of Contents 1关机前 1.1观察系统使用 1.2通知在线使用者关机 2关机 2.1 sy 2.2 shutdo 2.3 rebo 2.4 ha 2.5 powero 3执行 3.1等级 3.2等级 1关机前准备 1.1观察系统使用状态 谁在线:who 联网状态:netstat -a 后台执行的程序:ps -a…

    Linux干货 2017-08-21