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
下一篇 2016-08-08

相关推荐

  • awk命令详解

    简介: wak是一个强大的文本分析工具,也可以叫做报告生成工具。相对于grep的查找,sed的编辑,awk在对其数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格 为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有三个不同的版本:awk,nawk,gawk。我们目前所使用的awk一般指gawk,gawk是AWK和GN…

    Linux干货 2016-11-28
  • 马哥教育网络班21期+第六周课程练习

    马哥教育网络班21期+第6周课程练习 [TOC] vim编辑器使用方法总结 vim编辑器: 简介: vi: visual interface,文本编辑器 vim: vi improved,vi的增强版 文本:ASCII,Unicode, 文本编辑器种类: 行编辑器:sed, 全屏编辑器:nano,vi vim:模式化的…

    Linux干货 2016-08-15
  • ThirdWeek_SecondDay

    Python学习笔记整理

    Linux干货 2017-10-09
  • 第一周作业:计算机的组成及其功能

    第一周作业 主要是对应了马哥视频前两天共八节课的内容,作业一共有六道题 01.描述计算机的组成及其功能 02.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 03.描述Linux的哲学思想,并按照自己的理解对其进行解释性描述 04.说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pw…

    2017-09-12
  • linux使用yum对程序包管理相关知识

     yum客户端:          配置文件:              /etc/yum.conf: 为所有仓库提供公共配置              /et…

    Linux干货 2017-01-02
  • Unix发展与现状

    Unix 简史 1965年时,贝尔实验室(Bell Labs)加入一项由奇异电子(General Electric)和麻省理工学院(MIT)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi- processor、multi-level)的MULTICS操作系统。直到1969年,因MULTICS计划的工作进度太慢,该计划就…

    Linux干货 2015-09-22