标签:正则grepegrep
9.1 正则介绍_grep上9.2 grep中
9.3 grep下
9.1 正则介绍_grep上
这章算是重点,对以后写shell脚本有很大的帮助
grep 过滤关键词
创建一个grep目录,把/etc/passwd复制过来做一些实验。
基本用法 grep 'name’目录
grep -c 行数(过滤出来的有几行)
grep -n 行号
grep -i 不区分大小写
grep -v 取反,把没有nologin的行列出来
grep -r 遍历所有子目录,grep -r 'root' /etc
这些紫色的都是子目录。
grep -A,把关键词的行列出来之外还列出下面的指定行
-B -C同样
9.2 grep中
grep '[0-9]' /etc/inittab //表示过滤出含有0-9范围的数字 就符合要求(所有带数字的行
grep -v '^#' /etc/sos.conf //^的意思是以什么开头,就是指以#开头的,即列出所有不是#开头的文件
grep -v '^#' /etc/sos.conf |grep -v '^$' //在上面的基础上再进行过滤
grep -v '^[^a-zA-Z]' test.txt //^再方括号里的含义是里面字符的取反
grep 'r.o' passwd // 这个点表示任意一个字符, 比如r1o rbo roo都符合条件
grep ' o*o' passwd // *:*号左边的字符重复0-n次,0次就一个o 1次就oo
grep '.*' //任意一个字符,所有都匹配
grep 'o\{2\}' /etc/passwd // o出现两次,需要脱译,否则{}无法识别。 实际上是o{2} 然后脱译
9.3 grep下
上面grep 'o\{2\}' /etc/passwd 需要脱译
用egrep无需脱译
egrep 'o{2}' passwd 就直接识别 等同于grep 'o\{2\}' /etc/passwd ,方便很多。
还有一种grep -E 等同于 egrep
egrep 'o+' /etc/passwd // +号前面字符一次或多次,类似*号只是*有零次,o+t 之类都可以。
egrep 'o?t' /etc/passwd // ?号前面的字符为0或1,有就是ot 没有就是t
egrep 'root|nologin' /etc/passwd // 竖线表示或者,可以多个 比如 a|b|c|d ,+i可以不区分大小写。
扩展
把一个目录下,过滤所有*.php文档中含有eval的行
grep -r --include="*.php" 'eval' /data/
标签:正则grepegrep
原文地址:http://blog.51cto.com/13646170/2107842