一、正则介绍_grep上 正则就是各种各样字符串有规律的组合在一起
grep:用来过滤指定关键词 grep +关键词(用单引号引起来)+ 文件名 [root@linux-01 grep]# which grep //grep 自动加了颜色,color=auto alias grep='grep --color=auto' /usr/bin/grep [root@linux-01 grep]# grep -c 'nologin' passwd //-c选项,查看有多少行 17 #grep -n 'nologin' passwd //-n选项,前面显示行号,第多少行 #grep -ni 'nologin' passwd //-i选项,不区分大小写,也会把大写的NOLOGIN过滤出来 #grep -vni 'nologin' passwd //-v选项,取反,会把除了'nologin'之外的取出来 -r选项,遍历所有子目录或孙目录 #grep -r 'root' /etc/ > /tmp/grep.log //-r选项 -A 后面跟数字,过滤出符合要求的行以及下面n行 #grep -nA2 'root' passwd //列出'root'行以及以下2行 -B 后面跟数字,过滤出符合要求的行以及上面n行 #grep -nB2 'root' passwd //列出'root'行以及上面2行 -C 后面跟数字,同时过滤符合要求的行以及上下各n行 #grep -nC2 'root' passwd //列出'root'行以及上下各2行
二、grep(中) #grep '[0-9]' passwd //[ ]表示方括号里面的任意一个数字0-9 #grep -vn '[0-9]' /etc/inittab //过滤出/etc/inittab中不带数字0-9的所有行 #grep -n '^#' /etc/inittab //过滤出以#开头的所有行 #grep -nv '^#' inittab //把不是以#开头的行打印出来 #grep '[^0-9]' inittab //把非0-9(即不是数字)的行都列出来 #grep '^[^0-9]' inittab //把非0-9数字开头的行都列出来,^放到外面表示以什么开头的 #grep -v '^[^0-9]' inittab //把0-9数字开头的行都列出来
三、grep(下) #grep 'r.o' passwd //‘r.o’中的点表示任意一个字符,包括数字、大小写字母、特殊符号等 #grep 'oo' passwd //'oo' 中的表示:左边的字符重复0-n次 #grep '.' passwd //'.' 表示任意一个任意字符,即通配的意思,所有的都匹配 #grep 'user1.*bash' passwd //过滤user1这一行 #grep 'o{2}' passwd //过滤出现2次o的行数,{ }表示花括号前面字符的重复范围 #grep 'o{0,3}' passwd //过滤出从0-3次o的行数 #egrep 'o{2}' passwd //不使用脱义符号,使用egrep #grep -E 'o{2}' passwd //grep -E 和 # egrep 'o{2}' passwd 效果一样 #grep -E '(oo){2}' passwd //表示出现2次oo的行数 #grep 'o+o' passwd 或者 # egrep 'o+o' passwd //+表示出现o+1或者大于1次o,即o出现2次、3次、4次 #egrep 'o+t' passwd //表示ot、oot、ott等 #egrep 'o?t' passwd //?表示问号前面字符的重复次数为0或者1,即出现ot或者t的行 #grep -E 'root|nologin' passwd 或者 #egrep 'root|nologin' passwd // |竖线表示或者的意思
总结 .小数点表示:任意一个字符 星号表示:0个或多个前面的字符 { }表示:花括号前面的一个范围 +表示:一个或多个加号前面的字符 ?表示:0个或一个问号前面的字符 | 表示:或者