shell脚本学习(二)-grep

来源:互联网 发布:网页后台源代码数据库 编辑:程序博客网 时间:2024/06/06 19:46

1.     grep/egrep
      -c
 :打印符合要求的行数
      -n :在输出符合要求的行的同时连同行号一起输出
      -v :打印不符合要求的行
      -r  :会把目录下面所有的文件全部遍历一遍
      -i  :忽略大小写


2.     例子介绍
    过滤出带有某个关键词的行并输出行号          grep –n ‘root’ 1.txt
    过滤出不带有某个关键词的行并输出行号         grep –n –v ‘root’ 1.txt
    过滤出所有包含数字行                      grep –n ‘[0-9]’   1.txt
    过滤出所有不包含数字的行                grep –n –v ‘[0-9]’ 1.txt
    去除所有以‘#’开头的行                    grep –v ‘^#’ 1.txt
    去除所有空行和以‘#’开头的行              grep –v ‘^$’ 1.txt | grep –v ‘^#’

    过滤出以英文字母开头的行                    grep –v ‘^[a-zA-Z]’ 1.txt

    统计次数                              grep –o ‘root’ 1.txt | wc –l

    把出现的下两行打印出来                     grep –A2 –n ‘root’ 1.txt
    搜索etc目录下某个关键词的所有文件              grep –r ‘root’/etc/
    指定过滤字符次数                         grep ‘o\{2\}’passwd

   过滤任意一个或多个字符     grep ’r.o’ passwd ; grep ‘r*t’ passwd ; grep ‘r.*t’ passwd

    .表示任意一个字符; *表示0个或多个前面的字符; .*表示0个或多个任意字符,空格也包含在内

   n结尾的字符                           grep –n ‘n$’ 1.txt

    +和?比较特殊,如果在grep中使用要-E或者转义

 

3.     egrep = grep –E
   egrep
工具是grep的扩展
   表示1个或1个以上前面的字符            egrep ‘o+’ 1.txt
   表示0个或1个前面字符                egrep ‘o?’  1.txt
   匹配roo或者body                    egrep ‘roo|body’ 1.txt
   用括号表示一个整体                 egrep ‘r(oo)|(at)o’ 1.txt
   表示1个或多个’oo’                 egrep ‘(oo)+’  1.txt

0 0