Lesson36 Shell的文本处理正则表达式(grep——文本处理命令)
文章目录
- 1. 什么是grep搜索命令
- 2. 什么是grep -E 扩展搜索命令
- 3. grep中的正则表达式
- 4. grep中字符的匹配位置设定
1. 什么是grep搜索命令
grep是一个强大的搜索工具
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,
它能使用正则表达式搜索文本,由正则表达式或者字符及基本文本字符所编写的过滤条件,并把匹配的行打印出来。
用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,在使用上十分灵活
2. 什么是grep -E 扩展搜索命令
grep 正则表达式与扩展正则表达式
grep -E “[1-9]+” = egrep “[1-9]+”
正规的grep 不支持扩展的正则表达式,竖线是用来表达“或”的扩展正则表达式元字符,正规的 grep无法识别,加上反斜杠,这个字符就被翻译成扩展正则表达式,就像egrep 和grep -E一样
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次以上