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

相关推荐

  • rsyslog将日志记录于MySQL中

    数据库服务器:CentOS7 192.168.119.159   日志:CentOS6 192.168.119.129     准备mysql数据库 和 用户账户 [root@localhost ~]# yum install mariadb-server   [root@localhost ~]# systemctl…

    2018-02-05
  • 计算机的组成及其功能

        计算机是一种能接受和存储信息,并按照存储在其内部的程序对输入的信息进行加工、处理,然后把处理结果输出的高度自动化的电子设备。计算机是由运算器,控制器,存储器,输入装置和输出装置五大部件组成,每一部件分别按要求执行特定的基本功能。如下图所示: (1)  运算器或称算术逻辑单元(Arithmetical and Logica…

    Linux干货 2016-10-30
  • 8月5日课堂笔记

    bash基础及shell编程初步 bash的特性及bash脚本编程初步    操作系统硬件, 内核把底层硬件的复杂性给隐藏起来,统一输出为一种系统调用,系统调用非常底层,把系统调用封装成了库。让程序运行起来。用户在创建时有一个默认shell。终点设备用来当做标准输入和输出。  要想与主机交互,需要一个【终端】,附着在终端接口程序:  &n…

    Linux干货 2016-08-07
  • 初涉Linux基本要点概括(1)

    计算机,这里通常指可以储存程序的计算机,根据冯诺依曼体系,计算机组成部件包括控制单元(Control Unit)、算术逻辑单元(Arithmetic Logic Unit)、内存(Memory)、输入设备(Input)、输出设备(Output)。计算机通过输入的数据和指令,可以完成各种复杂的运算任务,小到文字处理、游戏、影音、大到卫星定位,火箭发射,人工智能…

    Linux干货 2016-09-26
  • 2017全球运维技术大会第二届12大技术专场等你来!

    去年9月,InfoQ在北京主办了第二届CNUTCon全球容器技术大会,大会邀请了来自Netflix、CoreOS、Docker公司、Mesosphere、阿里巴巴、腾讯、百度、京东、携程、搜狗等公司的技术负责人,共同探讨容器相关的应用场景、技术方案以及架构演进,得到了社区的一致好评。 到今年,CNUTCon已经是第三年了,前两年我们的方向是容器,随着技术的发…

    2017-06-20
  • N25-第16周博客作业

    1、源码编译安装LNMP架构环境;     安装nginx:      1)安装依赖包 ]# yum groupinstall “Development Tools” “Development Libraries” -y ]# yum install wget openssl-devel ncurses-de…

    2017-05-21