正则预习

正则

正则是遗传有规律的字符串,对于编写shell脚本有很大的帮助,各种编程语音中都有正则。

1,grep(1)

grep过滤指定关键词,最简单的用法:grep ‘关键词’ 文件名(关键词用单引号引起来)

-c代表多少行数

-n显示行数

-i不区分大小写

-v取反(过滤出不带关键词的行),例如带有nologin,那么不现实带有nologin的行

例如-A 2

-r遍历所有子目录

2,grep(2)

过滤带有数字的行 例如’[0-9]’

 

-v过滤掉对应的信息

过滤出1.txt文件里开头不带有#号的行

grep -nv '^#'  ,这里n是为了显示行数,n经常与其他的一起配合使用

 

grep '[^0-9]' 过滤出passwd文件里非纯数字的字符

注意这里是非纯数字,也就是说只要带有非数字的字符的都将会过滤出来

3,grep(3)

 

过滤出passwd文件里含有r.o的所有行。(点代表任意一个字符)

例如:grep 'a.c' 2.txt

 

过滤出passwd文件里含有oooooo等所有行,( 号表示左边的字符重复n次,如果是重复0次,那么就是一个o,因为还要加上右边的一个o

o*o代表从数量中间为任意,两边为o ()o的值 ()内可以为空

.代表任意字符

过滤出passwd文件里含

有任意一个字符重复任意次的行,(结果其实就是列出所有,“. 表所有的字符)

*表示左边的字符重复0N

过滤出passwd文件里以yang开头,并且以bash结尾的行

我们给44加上一个后缀

可以看到也可以过滤出来,使用*

过滤出passwd文件里出现重复的两个o(就是oo)的行。{}表示前面字符的重复范围

o{2}表示o出现两次,因为直接写不匹配

或者这样写,这里用扩展的egrep

 

其次用+号也可以实现

如果用egrep,则就不需要\转移,注意+号大于等于1才行

egrep 'o+t' 1.txt

egrep 'o+o' 1.txt

+号也可以跟其他的字符,上面已经举例

egrep 'o?t' 1.txt   ?代表问号表示前面的字符重复0次或者1次

例如上面的o?t ,代表t前出现过1次或者0次的o

竖线表示或者的意思。

grep -E 'root|111' 1.txt  例如匹配 root或者111

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_41654660/article/details/81878489