1、正则介绍
正则就是一串有规律的字符串,对编写shell脚本有很大帮助
各种编程语言中都有正则,原理是相同的
2、grep
grep :过滤指定关键词 grep [-cinvABC] ‘word’ filename
-c :行数
-i:不区分大小写
-n:显示行号
-v:取反
-r:遍历所有子目录,执行grep -r 'root' /etc/命令
-A:后面跟数字,过滤出符合要求的行及下面的n行
-B:同上,过滤出符合要求的行及上门的n行
-C,同上,过滤出符合要求的行及上下各n行
^,放在[ ]外时,表示以xx开头,放在[ ]内时,表示对[ ]内的字符取非
grep '[0-9]' passwd:查找passwd文件中所有包含数字的行
grep -v '[0-9]' passwd:查找passwd文件中所有不包含数字的行
grep '^#' /etc/inittab:查找文件中所有以#开头的行
grep -v '^#' /etc/inittab:查找文件中所有不以#开头的行
grep ‘[^0-9]’ inittab:查找文件中所有不包含数字的字符
grep ‘^[^0-9]’ inittab:查找文件中所有以非数字的字符开头的行
grep -v ‘^[^0-9]’ inittab:查找文件中所有以数字开头的行
grep 'r.o' passwd:.表示任意 一个字符
grep 'o*o' passwd:*表示左边的字符重复出现n次且以右边字符结尾的字符串,n表示任意的数字,包括0,
grep '.*' passwd:匹配任意一个字符,即匹配所有:
grep ‘o\{2\}’ passwd:查找文件中包含oo的字符串
grep ‘o\{1,3\}’ passwd:查找文件中包含o、oo、ooo的字符串,{}表示左边字符的重复范围
使用扩展的grep,egrep‘o{1,3}’ passwd:也可以实现查找文件中包含o、oo、ooo的字符串
也可以使用grep -E实现上述功能:
grep -E ‘(oo){2}’ passwd:查找文件中出现两次oo,即oooo的字符串
grep -E 'o+o' passwd:表示+左边字符出现一次或多次且以右边字符结尾的字符串,与*相比,+不包含0次
grep -E 'o?t' passwd:表示?左边字符重复0或1次,且以右边字符结尾的字符串
grep -E 'root|nologin' passwd:查找文件中包含root或nologin的行
grep -E 'root|Bus|997' passwd:查找文件中包含root或Bus或997的行