---------------grep+egrep 过滤
grep #通过正则表达式查找文件中的关键字
-i #忽略大小写
-c #打印匹配的行数
-C<行号> #打印出匹配的上下文的多少行
-l #列出匹配的文件名
-L #列出不匹配的文件名
-n #打印包含匹配项的行和行标
-w #仅匹配指定的单词而非关键字
-r #递归查询
-v #不输出匹配的行
-A<行号> #显示所找的匹配字段,并显示下多少行
-B<行号> #显示所找的匹配字段,并显示上多少行
例:
grep -ri "root" / #递归且不区分大小写对 root 字段查找
grep -c "root" passwd #打印匹配” root” 关键字有多少行
grep –C 2 "root" passwd #打印匹配” root” 关键字的上下文各2行
grep -n "root" passwd #打印匹配 root关键的行并显示行号
grep -w "root" passwd #打印匹配的单词而非关键字
正则表达式表示方法
\ #忽略正则表达式中特殊字符的原有含义
^ #匹配正则表达式的开始行
$ #匹配正则表达式的结束行
\< #从匹配正则表达式的行开始
\> #到匹配正则表达式的行结束
[ ] #单个字符;如 [A] 即 A 符合要求;
[ n - m ] #范围 如 [A-H] 即包含 A 至 H 都符合要求所有的字符
* #所有字符,长度可以为 0
. #所有的单个字符
例:
grep ^$ passwd #查找空行
grep -n ^root passwd #查找头为”root” 的行,并显示行号
grep -r bash$ ./ #查找在本地目录下(含子目录)结尾为”bash” 的文件
grep '\<root'* passwd #查找以”root”开头的单词
grep '\<root\>' passwd #查找”root”仅匹配此四个字符
grep -n ^[r] passwd #查找含有以”r” 字符开头的行
grep -r “^[a-f]” /root #查找含有以”a-f” 字符开头的行
grep “^[a-f]i” passwd #查找含有以” a-f” 字符开头 , 第 2 个字符为 i 的行
grep -A 3 root passwd #查找含有以 ‘root' 字符的行及下面 3 行信息
grep -B 3 root passwd #查找含有以 root 字符的行及上面 3 行信息
egrep #grep的增强版
支持 ? 匹配 , 即匹配 0 到 1 个正则表达式
支持 + 匹配 , 即匹配 1 到 多 个正则表达式
支持”或关系”的匹配 “|”
可以被 () 来包含正则表达式进行分组
在查找范围时,可直接用 [a-c][a,c], 而不需要” \”符号
例:
egrep i?oot passwd #查找前面有一个i或没有字符的含有oot的行
egrep r+oot passwd #查找前面至少一个r后面为oot的行
egrep '(^D|^d)' passwd # 查找以 D 或 d 字符为开头的行
egrep -v '(root|bin)' passwd #查找不包含”root”及”bin”的字段
egrep ‘^[a,c]’ passwd #查找a或c开头的行
egrep ‘[a-c]’ passwd #查找a或b或c开头的行