grep命令

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。

模式::由正则表达式字符及文本字符所编写的过滤条件

语法:grep [OPTIONS] PATTERN [FILE...]

常用选项:

--color=auto     #对匹配到的文本着色显示 ,系统默认将grep别名设置为:grep='grep --color=auto'

-m #        #只显示匹配到的#行

-v        #显示不被pattern匹配到的行

-i        #忽略字符大小写

-n        #显示匹配的行号

-c        #统计匹配的行数

-o        #仅显示匹配到的字符串

-q        #静默模式,不输出任何信息

-A        #显示匹配到行的后几行

-B        #显示匹配到行的前几行

-C        #显示匹配到的行的前后几行

-e        #实现多个选项间的逻辑or关系

-w       #匹配整个单词

-E         #使用ERE

-F       #相当于fgrep,不支持正则表达式

-f           #file 根据模式文件处理

正则表达式

REGEXP:由一类特殊字符及文本字符所编写的模式, 其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

分为两大类,基本的正则表达式和扩展的正则表达式,二者元字符的区别如下:

1、基本正则表达式元字符

^  #如果在[]外则表示以某个字符开头,如果在[]内,则表示除某些字符以外

$  #表示以某个字符结尾

.   #表示匹配任意一个字符

*   #表示匹配前面字符任意次

[]   #表示匹配括号内的多个字符中的任意一个

.*   #表示匹配所有

[^]  #表示匹配除括号内以外的所有字符

^$  #表示匹配空行信息

\     #将含有特殊含义的字符转义为原字符的含义

2、扩展的正则表达式

+    #表示前面字符出现一次或一次以上

?   #表示前面字符出现0次或一次以上

|   #表示或者的关系,匹配多个信息

()    #匹配一个整体信息,可以进行后项引用

{}    #定义前面的字符出现的次数

除此之外正则表达式也支持下面的元字符:

[:alnum:] 字母和数字

[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z

[:lower:] 小写字母

[:upper:] 大写字母

[:blank:] 空白字符(空格和制表符)

[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)

[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)

[:digit:] 十进制数字 [:xdigit:]十六进制数字

[:graph:] 可打印的非空白字符

[:print:] 可打印字符

[:punct:] 标点符号

一、grep常用选项

举例1:grep查找root关键字,且显示匹配到的第一行

观察以上三条命令的区别,不加-m选项,则默认显示匹配到的所有的行,加了-m选项则只显示-m指定的行数

举例2:显示文档中除shenzhen以外的所有的行

通过以上结果可知,当加上-v选项后,shenzhen所在的那行不再被显示

举例3:不区分大小写查找文档中的shenzhen字符

当加上-i选项后,grep查找时,不区分关键字的大小写

举例4:查找shenzhen字符并显示出字符在文档中的行数

加上-n选项后,会在关键词所在行的行首显示出关键词在文档中的行数

举例5:统计文档中含有shenzhen字符的所有行的数量

加上-c选项后,会统计包含shenzhen字符的行数

举例6:仅显示匹配到的字符

加上-o选项不会显示所匹配到的行,仅显示匹配到的字符

举例7:静默显示,即不输出任何信息

在查询root字符时,不会 输出任何结果,但是会有执行结果

举例8:显示匹配到的行及其后面那一行

加上-A(after)选项,并指定行数为1,则显示的结果为匹配到的行及其后面哪一行

举例9:显示匹配到的行及其前面哪一行

使用-B(before)选项,并指定行数为1,则显示匹配到的行及其前一行

举例10:显示匹配到的行及其前后1行

使用-C选项并指明其行数为1,则显示其匹配到的行以及前后各一行

举例11:匹配多个选项

使用-e选项能实现匹配shenzhen或者longhua的字符的行,并显示到屏幕

举例12:精确匹配到某个单词

不加-w选项,grep默认会显示出所有包含字符的行,加上-w则表示显示匹配到这个单词的行

举例13:通过扩展的正则匹配

由于?只支持扩展的正则表达式,所以需要在前面加上-E选项才能匹配到关键字符

二、grep位置锚定用法:

常用的表达式:

^  #行首锚定,用于模式的最左侧

$  #行尾锚定,用于模式的最右侧

^<pattern>$  #用于模式匹配整行

^$  #匹配空行

^[[:space:]]*$  #匹配空白行

\<或者\b  #词首锚定,用于单词模式的最左侧

\>或者\b  #词尾锚定,用于单词模式的最右侧

\<pattern\>  #匹配整个单词

举例:查找/etc/passwd中以root开头的行

在查找的字符前加^,只显示以该字符开头的行

举例2:查找/etc/passwd中以nologin结尾的行

在要匹配的字符后面加$,则grep会查找出以该字符结尾的所有行

举例3:查找出文档内容中以大写Z开头,并以520结尾的行

举例4:查找出文档中的空行

^$以这两个字符作为关键字符去匹配,意味着此行内没有任何内容,即空行

举例5:找出文档中空白行

从上图可知,^$匹配不了空白行,^[[:space:]]*$的含义为,以空白行开头且中间有任意个空白字符的行

举例6:查找文档中re在词尾的行

此处需要注意的是,用引号将模式给引起来,否则不生效

三、grep匹配次数

\{n\}  #前面的字符重复n次

\{n,\}    #前面的字符重复n次以上

\{m,n\} #前面的字符重复m次以上n次以下

举例1:匹配字符r后面的o出现3次的行

注意观察,标红的字符为匹配到的字符,当连续出现3个o则被匹配

举例2:匹配字符r后面的o出现最少3次,最多4次的行

观察此图和上图的区别,可知上图始终只能标识3个o,此图中则标识3个和4个o

举例3:匹配字符r后的o至少3次以上

举例4:匹配字符r后面的o最多出现3次

上图中,匹配o的次数包括0次,1次,2次,3次

四、分组及后向引用

\(\)将一个或多个字符捆绑在一起,当作一个整体处理,分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部变量中吗,这些变量的命名方式为:\1,\2,\3……

举例:利用grep分组匹配字符

以上将root和admin分别放在\(\)中,则将root分成组1,admin分成组2,后面再次出现重复字符时,可以通过\1和、2代替

五、或者

可以用符号\| 来表示匹配中的或者选项

举例:过滤出文档中Cat或者cat

在上图中\|则表示的是逻辑中的或的意思

正则表达式grep命令的更多相关文章

  1. linux:正则表达式grep命令

    基本语法一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串. 一.选择:| |   竖直分隔符表示选择,例如"boy|girl"可 ...

  2. NO22 Linux正则表达式--grep命令常用参数

    Linux正则表达式:  一.基础正则第一波字符说明: 示例: 二.基础正则第二波字符说明:  三.基础正则第二波字符说明: 示例:  grep:一般常用参数 示例:+和*  ?和.:  |:  () ...

  3. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  4. Linux grep命令和正则表达式

    介绍 grep是一个功能强大的文本搜索命令,可以用它来搜索某个文件中是否包含指定的搜索内容,它可以利用正则表达式来做复杂的筛选操作,它还可以为其它命令传输给管道的筛选,比如我们常用到的分析单个进程的操 ...

  5. 快速掌握grep命令及正则表达式

    Linux系统自带了支持拓展正则表达式的 GNU 版本 grep 工具,所有的Linux发行版中均默认安装grep ,grep 命令被用来检索一台服务器或工作站上任何位置的文本信息,如何在 Linux ...

  6. 正则表达式2——grep命令

    grep是Global search Regular Expression and Print out the line的简称. 1. grep命令基本用法 命令格式: grep [选项][模式][文 ...

  7. Linux grep 命令中的正则表达式详解

    在 Linux .类 Unix 系统中我该如何使用 Grep 命令的正则表达式呢? Linux 附带有 GNU grep 命令工具,它支持扩展正则表达式(extended regular expres ...

  8. grep命令及基本正则表达式

    grep命令是Linux系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功 ...

  9. Linux - 结合正则表达式使用grep命令

    Grep with Regular Expression grep命令基本用法 grep [-acinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名参数说明: ...

随机推荐

  1. H3C 显示RIP当前运行状态及配置信息

  2. H3C IPv6地址自动配置

  3. Spring Data JPA坑点记录

    本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...

  4. linux 不用 ioctl 的设备控制

    有时控制设备最好是通过写控制序列到设备自身来实现. 例如, 这个技术用在控制台驱动 中, 这里所谓的 escape 序列被用来移动光标, 改变缺省的颜色, 或者进行其他的配置任 务. 这样实现设备控制 ...

  5. 一图理解vue生命周期

    博客园上传图不太清晰,可以查看我的CSDN https://blog.csdn.net/jiaoshuaiai/article/details/90046736 感谢: https://segment ...

  6. vue权限控制菜单显示

    对于不同角色显示不同的菜单 思路1: 本地放一份完整的菜单数据,通过后台返回角色的菜单列表两者对比,筛选需要显示的菜单数据绑定,这里有个问题就是路由vue实例初始化就生成了,加载的全部,人为输入地址是 ...

  7. yum安装gcc和gcc-c++

    本次总结参考 博客:http://blog.csdn.net/robertkun/article/details/8466700  ,非常 感谢他的博客,帮我解决了问题. 今天安装gcc-c++时出现 ...

  8. HttpRepl 互操作的 RESTful HTTP 服务调试命令行工具

    今天早上曽根セイラ告诉我一个好用的工具 HttpRepl 这是一个可以在命令行里面对 RESTful 的 HTTP 服务进行路由跳转和访问的命令行工具.可以使用 cd 这个命令和像文件跳转已经跳转到下 ...

  9. Linux中编写shell脚本的小例子

    1.创建一个test.sh的文件 touch test.sh 2.编辑这个文件 vi test.sh 3.进入到编辑页面后将编辑页面先切换成编辑模式(按Esc键就可以切换) 4.切换到编辑模式后开始向 ...

  10. mysql主从之binlog的工作模式

    一 三种模式介绍 1.1 查看mysql主库的binlog格式 binlog仅在主库设置即可,从库无需设置 binlog的默认方式为STATEMENT ( show variables like '% ...