正则就是一串有规律的字符串shell
•掌握好正则对于编写shell脚本有很大帮助编程
•各类编程语言中都有正则,原理是同样的编程语言
•本章将要学习grep/egrep、sed、awk学习
grep [-cinvABC] 'word' filenameci
-c 统计匹配的行数字符串
-w 匹配一个单词,更精准 // grep -w 'root' /etc/passwd 只会匹配精准符合root的行, 如文件里是rooto 这种则不会匹配it
-i 不区分大小写test
-n 显示行号awk
-v 取反原理
-r 针对目录操做, 查找目录和子目录中符合条件的文件(遍历目录) grep -r /etc/
-A 后面跟数字,过滤出符合要求的行以及下面n行
-B 同上,过滤出符合要求的行以及上面n行
-C 同上,同时过滤出符合要求的行以及上下各n行
-P 非贪婪模式 ,例: str="123abc0axc456" echo $str | grep -P 'a.?c' echo aaabbbaaabbbbcccbbbb |grep -P 'a.?b'
grep/egrep示例
grep -n 'root' /etc/passwd
grep -nv 'nologin' /etc/passwd
grep '[0-9]' /etc/inittab 符合0-9任意一个数字
grep -v '[0-9]' /etc/inittab
grep -v '^#' /etc/inittab ^# 符合以#号开头
grep -v '^#' /etc/inittab|grep -v '^$' 不以#号开头的行 ^$ 空行
grep '^[^a-zA-Z]' test.txt 非a-zA-Z 开头的行(匹配以数字开头的行)
grep 'r.o' test.txt .表示1个任意字符
grep 'oo*' test.txt *号左边的字符匹配0次到屡次
grep '.' test.txt ’.’ 全部字符都会匹配
grep 'o{2}' /etc/passwd o出现2次
egrep 'o{2}' /etc/passwd o出现2次
egrep 'o{0,3}' /etc/passwd o{0,3}’ o出现 0-3次范围
egrep 'o+' /etc/passwd +号前面字符1次或多
egrep 'oo?' /etc/passwd ?前面字符出现0或1次
egrep 'root|nologin' /etc/passwd 竖线 或者的意思
egrep '(oo){2}' /etc/passwd ()表明1个总体, oo出现2次
如下匹配序用grep -E 或者 erep 可不用脱意符号
‘o{2}’ o出现2次
‘o{0,3}’ o出现 0-3次范围
‘(oo){2}’ ()表明1个总体, oo出现2次
‘o+’ +号前面字符1次或多
‘oo?’ ?前面字符出现0或1次
‘root|nologin’ 竖线 或者的意思