M20 – 1- 第三周博客(3):Linux上文本处理三剑客grep

Grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

1、作用

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用
权限是所有用户

2、格式:

grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

3、选项

--color=auto: 对匹配到的文本着色显示;
-v: 显示不能够被pattern匹配到的行;
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串;
-q: 静默模式,不输出任何信息
-A #:after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-w:整行匹配整个单词
-E:使用ERE;相当于egrep

4、模式

分两类:
基本正则表达式:BRE
扩展正则表达式:ERE (grep -E, egrep)

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

字符匹配:某个字符的匹配

. :匹配任意单个字符;
[] :匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:space:]:空格
[:punct:]:标点符号

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

*:匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.*:任意长度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配其前面的字符至少1次
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符至少m次,至多n次
\{,n\}:匹配前面的字符至多n次
\{m,\}:匹配前面的字符至少m次

位置锚定:定位出现的位置

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

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

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

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

字符匹配:某个字符的匹配

. :匹配任意单个字符;
[] :匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:space:]:空格
[:punct:]:标点符号

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

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

位置锚定:定位出现的位置

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

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

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

或者:一种,或两种以上

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

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

(0)
AleenAleen
上一篇 2016-08-08 16:14
下一篇 2016-08-08 16:14

相关推荐

  • 第六周练习

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; # cp /etc/rc.d/rc.sysinit /tmp # vim /tmp/rc.sysinit 末行模式下:%s@^[[:space:]]\+@#&am…

    Linux干货 2016-12-03
  • 第一周课程练习

    马哥教育网络班22期+第一周课程练习 1、描述计算机的组成及其功能   CPU(运算器和控制器),存储器(内存和外存),输入/输出设备。     (1)运算器:对数据进行加工处理(包括算术运算与逻辑运算);     (2)控制器:负责从存储器取出一条指令,并指出下一条指…

    Linux干货 2016-08-15
  • PXE实践

    本篇只以记录个人部署pxe过程中所遇问题,至于原理,只做部分简单说明。 pxe部署必要软件: syslinux (用于提供引导中所必备文件) tftp(用于提供存放vmlinuz,initrd,syslinux.0等引导类文件) dhcp(用于自动获取IP包括指明去哪个主机获取syslinux.0文件) 最后还需要一个web或者ftp服务,已提供系统安装中所…

    Linux干货 2017-02-05
  • 从需求和安全角度开始linux(一)-20151211

    突然想从需求和安全的角度来展开各种命令。因为我觉得linux中所有的常用命令基本都是需求和安全的产物。 当我打开一个CLI(command line interface)界面的linux操作系统时: 一、我希望能够看到里面有什么,因此有了ls的命令。      ls – list&nbs…

    Linux干货 2015-12-15
  • Linux文件类型及颜色标识

    文件类型(共7种): – :普通文件 d:目录文件 (directory) c:字符设备文件 (char) b:块设备文件 (block) s:本地域套接口 (socket) p:有名管道 (pipeline) l:符号连接 (link) 关于硬链接、软连接、复制之间的区别说明: 上图中,我为photo.png这个图片文件建立了一个拷贝(phot…

    Linux干货 2016-10-16
  • linux之文本处理工具

    今天来聊一聊关于linux中处理shell的文本工具,主要说说以下命令:  · 文件查看命令:cat、tac、  · 分页查看文件内容:more、less  · 显示文本前行或后行内容:head、tail  · 按列抽取文本:cut  · 合并文件:paste  · 文…

    2017-07-29