1、正则
正则就是一串有规律的字符串,掌握好正则对编写shell脚本有很大的帮助,各种编程语言都有正则,原理是一样的。
1、grep、egrep(是grep拓展的)
grep [-cinvABC] ‘word’ filename(关键词后面跟文件名)
举例grep ‘nologin’ passwd
-c 行数
-i 不区分大小写
-n 显示行号
-v 取反 (列出所有不包含nologin的文件)
-r 遍历所有子目录 (比如 grep -r ‘root’ /etc/ 会把etc下所有包括root的子目录包含的文件列出来)
-A 后面跟数字,过滤出符合要求的行以及下面n行
-B 同上,过滤出符合要求的行及上面的n行
-C 同上,同时过滤符合要求的行以及上下各n行
在centos7中grep自带 --color=auto(具体啥情况完也不知道,目前只知道可以给过滤词加上颜色区分开来)
grep -A2 ‘root’ passwd,列出符合标准的行以及下面两行 (-BC一样的意思)
grep ‘[0-9]’ /etc/inittab (匹配0-9的数字的行)
grep -v ‘[0-9]’ /etc/inittab (取相反,匹配除去带有0-9的所有行)
grep ‘^#’ /etc/inittab (^是表示以什么开头,显示以#号开头的行)
grep -v ‘^#’ /etc/inittab
grep -v ‘^#’ /etc/inittab|grep -v ‘^$’
grep ‘[^a-zA-Z]’ test.txt (^放到方括号里面的意思是,非a-zA-Z)
grep ‘[a-zA-Z]’ test.txt
grep ‘r.o’ test.txt (.代表任意一个字符)
grep 'oo’ test.txt( 表示左边的字符重复n次,0次也可以)
grep ‘.*’ test.txt (匹配所有的字符)
grep ‘o{2}’ /etc/passwd (花括号表示一个范围) (grep -E = egrep)
egrep ‘o{2}’ /etc/passwd (作用等同于上,不用脱义{}括号)
egrep ‘o+’ /etc/passwd (+表示重复左边的字符n次,但是不包括0次,最少是一次)
egrep ‘oo?’ /etc/passwd(?表示前面这个字符要么有,要么没有0次和一次)
egrep ‘root|nologin’ /etc/passwd (这里的竖线表示或者的意思,要是用grep的话要脱义)
egrep ‘(oo){2}’ /etc/passwd (花括号前面的范围可以用小括号表示)