文本三剑客之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

相关推荐

  • shell脚本3——循环语句

    流程控制:      顺序执行      选择执行      循环执行 循环执行:      将某代码段重复运行多次      重复运行多少次:  &…

    Linux干货 2016-08-18
  • FHS文件系统各目录及功能

    FHS即:filesystem hierarchy standard 的缩写,意思是文件系统目录标准,Linux系统采用这种文件组织形式,这是一种树形结构组织文件。如下图, /bin : 此文件用于放置二进制执行文件。 在/bin底下的指令可以被root与一般账号所使用,主要有:cat, chmod, chown, date, mv, mkdir,…

    Linux干货 2016-10-17
  • Shell脚本编程—特殊用法(select)及函数、递归

    Shell脚本编程—特殊用法及函数   一、while的特殊用法: 1、使用格式: while read 变量名;do    循环体 done </PATH/TO/filename 注:依次从指定的文件中的内容逐行读取,并把读取到的每行赋值给变量。 2、例题: 扫描/etc/passwd文件每一行,如发现GECOS字段为空…

    Linux干货 2016-08-21
  • Linux基础知识(二)-bash基础特性,文件管理命令

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及相关示例演示。 2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内答及其示例演示 4、文件的元数据信息有哪些,分别表示什么含义,如何査看?如何修改文件的时间戳信息。 5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果? 6、显示/var目录下所有以l开头,以一个小写字母结…

    Linux干货 2016-09-26
  • 磁盘及文件系统管理

    Linux磁盘及文件系统: 磁盘:用于持久存放数据 常见的磁盘有:机械硬盘、固态硬盘 I/O Ports: I/O设备地址 常见的硬盘接口类型:      IDE(ata):并口,133MB/s     SCSI:并口,UltraSCSI320,320MB/s,UltraSCSI…

    Linux干货 2016-08-26
  • AWK

    awk:报告生成器,格式化文本输出         处理方式:文件里有多行,awk处理时,先将第一行放到内存里面,然后将该行分割成列(字段),第一个字段叫$1,第二个字段$2,以此类推,$0代表整行。        &n…

    Linux干货 2016-09-26