---------------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开头的行

posted on 2018-09-18 11:44  石乐志de冯风  阅读(365)  评论(0编辑  收藏  举报

导航