Linux20180425六周第一次课(4月25日)

六周第一次课(4月25日)

9.1 正则介绍_grep上
9.2 grep中
9.3 grep下


正则表达式

image.png

image.png


使用grep可以查找文件中的关键字。

语法: grep  "关键字" 文件名

image.png


有一些选项是可以选的。

-n 是显示行号

image.png


-c显示行数,一共在这个文件中有多少行带有这个关键字

image.png


-v取反,就是多少行没有这个关键字,也就是除了关键字的那两行外

image.png


-A 数字,表示显示出关键字以及往下数字行的内容

image.png


-B 数字,是和A想反是往上数字行

image.png


-C 数字 就是既有上又有下,往上数字行 往下数字行

image.png



image.png


grep '[0-9]' filename 

表示0-9范围里的数字匹配 

image.png

image.png

也可以采用排除的选项 -v 

grep -v '[0-9]' filename

image.png


关键字里的参数


grep -v '^#' filename 

grep -v '^[0-9]' filename  就是查找非开头为数字的行

-v是取反 ^是行开始的意思  ^#就是以#为开头的行 

 image.png


image.png

image.png


grep -v ‘^#’ inittab 取出来首字母不为#的行

image.png


注意:这个^是在[]里面

grep '[^0-9]' inittab 作用是非0-9,只要不是数字任何一个字符都符合要求。就是说哪怕有一个字符不为0,这一行都满足要求。

这个是以一个非数字的字符开头的行,只要不是数字开头都符号,哪怕是后面有数字都没有关系。所以下面

image.png

image.png

image.pngimage.png

同样的,假如前面再加上一个 ^ 就表示首位也不能是数字,所以首位有数字的也没了。

image.png

image.png


grep 'r.o' passwd 这里的点代表了任意一个字符,占位符。

image.png


grep 'o*o' passwd *表示左边匹配0到无限次,右边必须存在

image.png

如果是使用'.*'的话,表示匹配任意字符。*的左边可有可无嘛

image.png

比如像找某个用户的那一行,直接用'用户名.*bash' 就可以查到

image.png


正则中{}表示范围,但是需要用阻转义符 \

grep 'o\{2\}' passwd 表示有2个o的 

image.png

grep 'o\{1,3\}' passwd 表示1-3个o,记得用逗号,

image.png


但是转义符比较免费,看起来也比较不舒服,是否可以不用\? 

那样的话,egrep就登场了

egrep是grep的扩展

grep -E = egrep

egrep 'o{2}' passwd等同于 grep 'o\{2\}' passwd 等同于 grep -E 'o{2}' passwd

image.png

image.png

如果是像匹配最后一个字符是什么字母的话,需要在这个字母后面加上$ 换行符 表面后面没有了

比如查找s开头n结尾

image.png


+ 在egrep 或者 grep -E下使用无需转义符 

+和*很像,区别是 + 表示+左边一次或者无数次 而*是表示左边0次或者无数次

image.png


egrep 'o?t' passwd 问号表示问号前面字符出现的次数为0或者1

image.png 


|表示或者,但是也需要使用egrep或者grep -E 来使用。|是选其一,可以有多个

image.png

猜你喜欢

转载自blog.51cto.com/13691454/2107903