正则表达式之grep,egrep

正则表达式
正则表达式又称规则表达式,正则就是一串有规律的字符串,掌握好正则对于编写shell脚本有很大帮助,各种编程语言中都有正则,原理一样。学好正则表达式,才算真正进入linux。

正则三剑客grep/egrepsedawk

grep 过滤指定关键词,egrep是grep的升级版
grep [-cinvABC] ‘word’ filename
-c 行数
-i 不区分大小写
-n 显示行号
-v 除去,非,不包括,等反义
-r 向下查找所有目录
-A 跟数字,过滤包含指定字符的行及下面的n行字符串
-B 跟数字,过滤包含指定字符的行及上面的n行字符串
-C 跟数字,过滤包含指定字符的行及上下各n行字符串
.
grep 'nologin' passwd 过滤passwd文件中包含nologin的字符串
grep -c 'nologin' passwd 过滤包含nologin的字符串并统计行数
grep -n 'nologin' passwd , 过滤包含nologin的字符串并显示行号,区分大写
grep -ni 'nologin' passwd 不分大小写过滤包含nologin的字符串并显示行号
grep -vni 'nologin' passwd 不分大小写过滤不包括nologin的字符串并显示行号
grep -r ‘root’ /etc/ 逐级向下层目录文文件过滤包含root的字符串
grep -A2 'root' passwd 过滤包含root的字符串行及以下2行字符串
grep -nA2 'root' passwd 过滤包含root的字符串行及以下2行字符串,并显示行号
grep -nB5 'root' passwd 过滤包含root的字符串行及以上5行字符串,并显示行号
grep -nC3 'root' passwd 过滤包含root的字符串行及以上下各3行字符串,并显示行号

grep '[0-9]' /etc/initab 过滤包含集合条件的字符串
grep -v '[0-9]' /etc/initab 过滤不包含集合条件的字符串
grep -v '^#' /etc/initab 过滤不包含以#开头的字符串
grep -v '^#' /etc/initab|grep -v '^$' 过滤不包含以#开头的字符串或过滤不包含以$开头的字符串
grep '^[^a-zA-Z]' test.txt 过滤以非集合条件开头的字符串
grep 'r.o' test.txt 过滤中间包含任意单字符的ro组合的字符串
grep 'r*o' test.txt 过滤中间包含任意个任意字符的ro组合的字符串
grep ‘ .*' test.txt 过滤重复出现任意次的一个单字符的字符串, . 表示任意的单字符
grep 'oo*' test.txt 过滤重复出现任意次的oo的字符串
grep 'o\{2\}' /etc/passwd 过滤重复出现两次o的字符串
grep 'o\{0,3\}' /etc/passwd 过滤重复出现0到3次o的字符串
grep -E 'o{2}' /etc/passwd 过滤重复出现2次o的字符串
egrep 'o{2}' /etc/passwd 过滤重复出现2次o的字符串
egrep 'o+t' /etc/passwd 过滤重复出现1次以上的o与字符t的组合的字符串
grep ‘o\+m' /etc/passwd 过滤重复出现1次以上的o与字符m的组合的字符串
egrep 'o?e' /etc/passwd 过滤重复0次或1次的o与e的组合的字符串
egrep 'root|nologin' /etc/passwd 过滤包含root或nologin的字符串
grep -Ei 'root'|'nologin' 不分大小写过滤包含root或nologin的字符串
egrep '(oo){2}' /etc/passwd 过滤重复出现2次的oo组合的字符串
grep -r --include="*.php" 'eval' /*/ 过滤单目录下所有.php文件里含有eval的字符串


猜你喜欢

转载自blog.csdn.net/langyue919/article/details/80088246