什么是正则? 正则就是一串有规律的字符串 掌握好正则对于编写shell脚本有很大帮助 各种编程语言中都有正则,原理是一样的

grep [-cinvABC] 'word' filename -c 行数 -i 不区分大小写 -n 显示行号 -v 取反 -r 遍历所有子目录 -A 后面跟数字,过滤出符合要求的行以及下面n行 -B 同上,过滤出符合要求的行以及上面n行 -C 同上,同时过滤出符合要求的行以及上下各n行

公式: grep '过滤词' 文件名 grep 'root' passwd 在passwd文件里过滤出nologin,centos7里grep好的特点是,过来的关键词自动标红 grep -c 'root' passwd #统计出现root过滤词的,有几行 grep -n 'root' passwd #显示root过滤词在多少行出现的,并显示行号

grep -i 'root' passwd 不区分'过滤词的大小写' -v 取反 grep -v 'root' passwd 有过滤词的,不显示。

-r 遍历所有子目录 #子目录里的过滤词也会过滤

-A 后面跟数字,过滤出过滤词所在的行,及A后面更得数字的行。 B 同上,过滤出符合要求的行以及上面n行 C 同上,同时过滤出符合要求的行以及上下各n行

grep -n 'root' /etc/passwd grep -nv 'nologin' /etc/passwd

grep '[0-9]' passwd 列出任意一个0-9的数字 grep -v '[0-9]' passwd -v 取反, 任意一个0-9的数字不列出来。

grep -v '^#' passwd #^ ^ 代表以某某开头,例如:以#号开头 看配置文件,可以去掉以#开头的文件

grep -n '[^0-9]' passwd #非0-9,代表 不是数字 grep '^[^a-zA-Z]' test.txt #同上,非字母。 ^放在方括号里面,代表非 grep -v '^[^0-9]' passwd #以不是数字开头的行

grep 'r.o' test.txt #r.o的任意的一个字符 grep 'oo' test.txt # * 值得是 一定要和前面的字符相关的,代表 o以前0次或多次 grep '.' test.txt #. 所有 egrep 'o{2}' /etc/passwd # 正则里面,{}表示一个范围。左边的命令是匹配不到的,正确的写法应该下面这个: grep 'o{2}' /etc/passwd \进行脱意。 匹配有两个o的,如果不想写脱意\ 可以这样写: egrep 'o{2}' /etc/passwd = grep 'o{2}' /etc/passwd =grep -E 'o{2} /etc/passwd

egrep 'o+t' /etc/passwd # +代表 加号o以前一次或多次,后面紧跟着t egrep 'o+' /etc/passwd = grep 'o\0+' /etc/passwd

egrep 'oo?' /etc/passwd #?值得是?前面字符重复的0次或1次,类似

egrep 'root|nologin' /etc/passwd # | 或者的意思, egrep 'root|nologin' /etc/passwd = grep -E 'root|nologin'

总结: . 表示任意一个字符,*,表示0个或多个字符, .*通配 {}表示范围,花括号前面字符的范围,可以用小括号括起来。+表示+前面的字符一个或多个。?表示0个或1个?前面的字符,| 表示或者。