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)
上一篇 2016-08-08 16:14
下一篇 2016-08-08 16:14

相关推荐

  • 开篇

    正式开始学习的第一天,了解LINUX,爱上LINUX。希望在往后的日子里越战越勇!!

    Linux干货 2017-07-11
  • 用户管理和组管理

         Linux是一个多用户多任务的系统 ,因此学习用户管理和组管理,对我们工作和学习有很大的帮助。用户是你登录这个操作系统的凭证,因此用户的创建和修改,删除是用户管理的基本工作,所以你掌握这些,对你的工作有很好的帮助。 用户账号管理 /etc/passwd username:x: UId:gid:comment:…

    Linux干货 2016-08-10
  • for,while,until简介

    Shell(以Bash为例)中的循环语句一般有for、while、until这几种,偶尔还有写错语法的时候,这里结合实例来自己总结一下。也为今后使用提供一个快捷的资料获取渠道。 一、for循环语句 实例1.1 最基本的for循环: (传统的形式,for var in …) 代码如下: #!/bin/bashfor x in one two three fou…

    Linux干货 2016-08-22
  • keepalived高可用实例

    1、keepalived单实例 1)实验环境为VMware虚拟机,两台centos7.2,主机1IP地址为10.1.252.55,主机2IP地址为10.1.252.34,虚拟路由IP为10.1.252.246, 2)确保iptables和selinux不影响实验 (1)确保两台主机的时间同步 [root@localhost ~]# vim…

    Linux干货 2016-11-01
  • 马哥教育网络班20期+第二周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。  答:文件管理类命令有: touch :创建一个新文件 示例:在/tmp/目录下创建一个1.log文件 touch /tmp/1.log mv:移动文件  示例:将/etc/fstab文件移至/tmp/目录中。  mv /etc/fstab /tmp/…

    Linux干货 2016-06-23
  • vsdf

    Linux干货 2017-10-23