shell 正则表达式及grep命令

1. 什么是grep搜索命令
grep是一个强大的搜索工具
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,
它能使用正则表达式搜索文本,由正则表达式或者字符及基本文本字符所编写的过滤条件,并把匹配的行打印出来。
用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,在使用上十分灵活

  
  
  • 1
  • 2
  • 3
  • 4
2. 什么是grep -E 扩展搜索命令

grep 正则表达式与扩展正则表达式
grep -E “[1-9]+” = egrep “[1-9]+”

正规的grep 不支持扩展的正则表达式,竖线是用来表达“或”的扩展正则表达式元字符,正规的 grep无法识别,加上反斜杠,这个字符就被翻译成扩展正则表达式,就像egrep 和grep -E一样

  
  
  • 1
3. grep中的正则表达式

grep的格式:

grep 匹配条件 处理文件
该实验我们用desktop来完成

首先复制一份/etc/passwd到当前目录,ls 可以看到,在当前路径中,passwd文件已经存在
在这里插入图片描述
编辑passwd文件
在这里插入图片描述
由于passwd文件内容太多,我们实际上用不了这么多的字符,因此将内容删掉一部分,再加上后三行内容,如下图所示
在这里插入图片描述
这样我们就将待匹配的字符文件准备好了
从passwd文件中过滤出含有root关键字的行
在这里插入图片描述
从passwd文件中扩展过滤出含有“root”和“ROOT”的行
在这里插入图片描述
不区分大小写从passwd文件中扩展过滤出含有root关键字的行
在这里插入图片描述
从passwd文件中不区分大小写过滤出以“root”关键字为开头和结尾的行
在这里插入图片描述
-v表示除了,第二条命令的意思是,从passwd文件中不区分大小写过滤出root关键字在中间的行
在这里插入图片描述
-n表示显示行号
从passwd文件中不区分大小写过滤出以root关键字开头或结尾的行,并且显示行号
在这里插入图片描述
-n2表示输出关键字以及前后两行
从passwd文件中过滤出ROOT关键字的行并且显示其前后两行(后边只显示了一行是因为第36行以后没有内容)
在这里插入图片描述
同样,-n1表示输出关键字以及前后1行
在这里插入图片描述

grep中的正则表达式

字符 说明
^xy 以xy开头
xy$ 以xy结尾
‘x…y’ xy中间有4个字符
‘x…’ x后边有4个字符
‘…y’ y前边有4个字符
4. grep中字符的匹配位置设定

在这里插入图片描述

grep中字符的匹配位置设定

位置 说明
^关键字 以关键字为开头
关键字$ 以关键字为结尾
\ <关键字 以关键字为开头并且关键字前边没有任何字符
关键字\> 以关键字为结尾并且关键字后边没有任何字符
\< 关键字\> 关键字前后都没有任何字符

编辑westos文件
在这里插入图片描述
写入以下内容
在这里插入图片描述
匹配xy中0-任意个字符
在这里插入图片描述
匹配x和y中只能有一个字符
在这里插入图片描述
过滤出x和y中只能有3个字符
在这里插入图片描述
修改westos文件内容
在这里插入图片描述
写入的内容如下图
在这里插入图片描述
过滤x出现0-任意次y出现1个
在这里插入图片描述
过滤x字符出现0到1次y出现1个

在这里插入图片描述
修改westos文件内容
在这里插入图片描述

在这里插入图片描述
过滤x出现1到任意次y出现1个
在这里插入图片描述
过滤x一个y出现1个
在这里插入图片描述
过滤x一个y出现1个
在这里插入图片描述
过滤x在开头出现一个,y出现1次
在这里插入图片描述
过滤x出现在开头,y出现在结尾(避免贪婪模式)
在这里插入图片描述
过滤x出现1到任意次,y出现一次

在这里插入图片描述
过滤xy这个整体出现2次以上
在这里插入图片描述

扫描二维码关注公众号,回复: 9578522 查看本文章
发布了107 篇原创文章 · 获赞 0 · 访问量 1455

猜你喜欢

转载自blog.csdn.net/weixin_45029822/article/details/104303891