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

相关推荐

  • 初入Linux世界 —马哥教育网络班N22_第三周课程练习

    一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。           [root@Alien ~]# who |cut -d ' ' -f1|sort -u       root 二、取出最后登录到当前系统的用户的相关…

    Linux干货 2016-09-19
  • 学习宣言

    现在,青春是用来奋斗的;将来,青春是用来回忆的。   人生之路,有坦途也有陡坡,有平川也有险滩,有直道也有弯路。青年面临的选择很多,关键是要以正确的世界观、人生观、价值观来指导自己的选择。无数人生成功的事实表明,青年时代,选择吃苦也就选择了收获,选择奉献也就选择了高尚。青年时期多经历一点摔打、挫折、考验,有利于走好一生的路。要历练宠辱不惊…

    Linux干货 2016-12-29
  • 基础指令使用篇 Linux版

    回显,回声 echo echo hello > /dve/pts/1 打开图形界面 init 5   关闭图形界面 init 3 ctrl+alt+F1-6字符,F7图形界面 chvt 改变虚拟终端 chvt +数字 startx  图形的软件打开 poweroff centOS 6.8与7.2都正常关闭断电 hostname 显示…

    系统运维 2016-08-04
  • 初识linux的进程管理与作业控制(第十二天)

         进程:linux中,运行每一个二制进程序或触发每一个事件,系统都会将它定义为一个进程,并给一个进程号,称为PID。同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。          &nbsp…

    Linux干货 2016-06-01
  • 基于虚拟用户控制的ftp服务

    FTP作为最常见的文件共享服务,可提供文件的上传,下载等服务;其用户可分为三类: 匿名用户:即不需要用户账号与密码即可登录FTP服务器,此时登录用户将会被映射为系统上的ftp用户。 系统用户:即用FTP服务器上的用户账号与密码登录FTP服务器。此种方法虽然在一定程度上对登录做出了限制,但由于系统账号的相关权限,则增大了FTP服务器的系统风险; 虚拟用户:用户…

    Linux干货 2016-10-23
  • 逻辑卷的创建、维护和迁移

    逻辑卷管理器(LVM)介绍: 1、允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小 2、允许在多个物理设备间重新组织文件系统 (1)将设备指定为物理卷 (2)用一个或者多个物理卷来创建一个卷组 (3)物理卷是用固定大小的物理区域(Physical Extent,PE)来 定义的 (4)在物理卷上创建的逻辑卷 是由物理区域(PE)组成 (5)可以在逻辑…

    Linux干货 2017-12-10