Shell编程3_文本处理三剑客(grep)

文本处理三剑客(grep)

1.grep介绍

文本过滤器(在大段指定的文件中,按一定的模式 patten)进行过滤)
grep 有三种形式:grep egrep fgrep(grep 家族)
其实 grep 是一段话的缩写:Global search regular expression and print out the line(全面搜索研究正则表达式并显示出来)
作用:grep 命令是一种强大的文本搜索工具,根据用户指定的“模
式”对目标文本进行匹配检查,打印匹配到的行。
模式(patten):由正则表达式或者字符及基本文本字符所编写的过滤条件

2.正则表达式:

正则表达式(REGEXP)
正则表达式:由一类特殊字符及文本字符所编写的模式,其中有些字
符不表示字符的字面意思,而表示控制或通配的功能(是不是比较难
理解)
分类:
1.基本正则表达式(BRE):grep
2.扩展正则表达式 (ERE): egrep
grep –E
gawk 能够识别 ERE 模式,但 sed 编辑器不能
记住:sed 编辑器和 gawk 的正则表达式引擎之间是有区别的,gawk
可以使用大多数扩展正则表达式模式符号,并且提供一些额外的 sed
编辑器没有的额外过滤功能,但正因为如此,它通常在处理数据流时更慢
3.grep 的格式:
指定选项 而后指定模式 指定选项即可 (表示从这个文件中以这个
模式匹配 符合这个模式的行 都予以显示)这时 grep 最简单的用法
(模式当中 只要不涉及变量的话 单双引号都可以 双引号:弱引用
单引号:强引用)

3.grep格式:

将/etc/passwd文件复制到当前目录进行实习试验
grep 匹配条件 处理文件
grep  root passwd     过滤passwd含root的行
grep -i root passwd   过滤passwd含root忽略大小写区别
grep ^root passwd        过滤paasswd以root开头的行
grep  root$ passwd       过滤passwd以root结尾的行
grep -E "root|lee" passwd 过滤passwd含root或者lee的行 -E扩展匹配符号
==egrep "root|lee" passwd
grep -r [^]root[$] /mnt  过滤/mnt下所有文件含root行的内容 
grep -rn root /mnt 过滤/mnt下所有文件含root行的内容并显示行号
grep -v root passwd  过滤passwd中除了root行的内容 -v反选
grep -o root passwd 只过滤root
##grep字符的匹配次数设定

grep -E x*y       file 表示字符x出现的0-任意次数并且y要求至少一个的行
grep -E 'x?y'     file 表示字符x出现0-1次并且y要求至少一个的行
grep -E 'x+y'     file 表示字符x出现1到任意次并且y要求至少一个的行
grep -E 'x{n}y'   file 表示字符x出现n次并且y要求至少一个的行
grep -E 'x{m,n}y' file 表示x出现最少m次,最多出现n次并且y要求至少一个的行
grep -E 'x{0,n}y' file 表示字符x出现0-n次并且y要求至少一个的行
grep -E 'x{m,}y'  file 表示x最少出现m次,最多不限并且y要求至少一个的行
grep -E 'x{,n}'   file 表示x最多出现n次、最少不限
grep -E '(xy){n}' file 关键字xy出现n次
grep -E 'x.*y'    file 关键词xy之间出现任意字符


精确匹配
grep -E '^westos$'   file 表示file中westos这行
grep -E '\<westos\>' file 表示file文件中以单词westos开头的行

这里写图片描述

4.grep练习

过滤含root的行
这里写图片描述

过滤含root的行忽略大小写
这里写图片描述

过滤以root开头的行
这里写图片描述

过滤以root结尾的行 :
在passwd文件最后加入一行

root

这里写图片描述

过滤不含root的行
这里写图片描述

过滤当前目录下目录下含root的行
这里写图片描述
过滤当前目录下下含root开头并且以root结尾的行,输出显示行号
这里写图片描述
只过滤root的行[显示行号]
这里写图片描述

给定file如下
这里写图片描述
字符x出现0-任意个的行
这里写图片描述
字符x出现的0-任意次数并且y要求至少一个的行
这里写图片描述
匹配x出现0-1次的行
这里写图片描述
匹配x出现0-1次,y至少出现一次的行
这里写图片描述
匹配x出现1到任意次,y至少一次的行
这里写图片描述
匹配x出现4次并且至少有一个y的行
这里写图片描述
匹配x至少出现2次,最多出现4次并且至少有一个y的行
这里写图片描述
匹配x出现最少3次的行
这里写图片描述
匹配x出现最多3次的行(默认情况下正则表达式处于贪婪匹配所以x多于3的行也被过滤出来了)
这里写图片描述
匹配xy出现两次的行(xy)在一起一定要有括号,否则匹配y出现两次x出现一次的行
这里写图片描述
匹配xy之间任意字符个数的行
这里写图片描述

5.精确匹配

创建新文件
这里写图片描述
匹配file1中hello world这一行[显示行号] -E或不-E都可以
这里写图片描述
匹配file1中以hello world单词开头和结尾的行
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zwhzwh0228/article/details/80829738
今日推荐