• 三大搜索利器 -- grep


    grep 的作用


      在文件中查找并显示包含指定字符串的行

    grep 格式


       grep [选项] ... 查找条件 目标文件

    常用选项


    •  -i : 查找时忽略大小写;
    • -v : 反转查找, 输出与条件不相符的行;
    • -c : PATTERN 成功匹配到内容的次数;
    • -n : 显示行号;
    • -m : 匹配的内容最大输出的行数, -m 3 表示只输出 3 行;
    • -e : 使用模式匹配, 可多次使用 -e 进行多个匹配;
    • -o : 只打印匹配到的内容;
    • -w : 匹配整个单词;
    • -x : 匹配整行;
    • -q : 静默执行;
    • -s : 无提示, stderr会被忽略, -sq 组合可完全屏蔽 grep 的输出;
    • -a : 当认为文件是二进制文件时, 使用 -a;
    • -E : 扩展正则表达式, 相当于使用 egrep;
    • -H : 输出文件名, 在行内容前, 当目标文件为多个时, 默认;

    示例


    // *********************************** 示例 一 ************************************
    // 过滤出用户 tian 的行
    grep 'tian' passwd 
        tian:x:502:502::/home/tian:/bin/bash
    
    // *********************************** 示例 二 ************************************
    // 过滤掉以 "#" 开头的行及空行
    grep -v "^#" /etc/yum.conf |grep -v "^$"    //grep -Ev "^#|^$" /etc/yum.conf 及 egrep -v "^#|^$" /etc/yum.conf 相同效果;
        [main]
        cachedir=/var/cache/yum/$basearch/$releasever
        keepcache=0
        debuglevel=2
        logfile=/var/log/yum.log
        exactarch=1
        obsoletes=1
        gpgcheck=1
        plugins=1
        installonly_limit=5
        bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
        distroverpkg=centos-release
    
    // *********************************** 示例 三 *************************************
    // -c 匹配到的次数
    grep -c '^root' passwd
     1
    
    // *********************************** 示例 四 *************************************
    // -i 忽略大小写;
    grep -i 'root' /etc/ssh/sshd_config 
     #PermitRootLogin yes
     # the setting of "PermitRootLogin without-password".
     #ChrootDirectory none
    
    // *********************************** 示例 五 *************************************
    // -n 输出匹配到内容的行号
    grep -n '^root' passwd 
     1:root:x:0:0:root:/root:/bin/bash
     
    // *********************************** 示例 六 *************************************
    // 使用正则
    // [] 匹配括号中任意字符
    grep -n "^[abcd]" passwd 
     2:bin:x:1:1:bin:/bin:/sbin/nologin
     3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4:adm:x:3:4:adm:/var/adm:/sbin/nologin
     16:dbus:x:81:81:System message bus:/:/sbin/nologin
     18:abrt:x:173:173::/etc/abrt:/sbin/nologin
     26:apache:x:48:48:Apache:/var/www:/sbin/nologin
     
    // [] 中使用范围
    grep -n "^[a-d]" passwd 
     2:bin:x:1:1:bin:/bin:/sbin/nologin
     3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4:adm:x:3:4:adm:/var/adm:/sbin/nologin
     16:dbus:x:81:81:System message bus:/:/sbin/nologin
     18:abrt:x:173:173::/etc/abrt:/sbin/nologin
     26:apache:x:48:48:Apache:/var/www:/sbin/nologin
    
    // ********************************** 示例 七 **************************************
    // ?; 单独的?是不支持基本表达式;
    grep -n '[od][ors][lnm]?' test 
     1:good good study
     3:good
     5:goood
     6:goolld
    grep -En '[od][ors][lnm]?' test 
     1:good good study
     3:good
     5:goood
     6:goolld
     
    // * 匹配0次或多次, 
    grep -n "go*" test 
     1:good good study
     3:good
     4:gold
     5:goood
     6:goolld
     
    // + 匹配一次或者多次
    grep -En "goo+" test 
     1:good good study
     4:good
     6:goood
     7:goolld
    
    // 匹配之前项至少m次
    grep -En "go{2,}" test 
     1:good good study
     4:good
     6:goood
     7:goolld
     
    // 匹配其中一个
    grep -En "go(g|o)" test 
     1:good good study
     3:gogogo
     4:good
     6:goood
     7:goolld
  • 相关阅读:
    String的几种初始化方法的区别
    Java编程思想之字符串
    树图 广度优先算法和深度优先算法
    bzoj1047: [HAOI2007]理想的正方形
    bzoj3124: [Sdoi2013]直径
    bzoj3930: [CQOI2015]选数
    bzoj1222: [HNOI2001]产品加工
    bzoj3578: GTY的人类基因组计划2
    bzoj4444: [Scoi2015]国旗计划
    bzoj1040: [ZJOI2008]骑士
  • 原文地址:https://www.cnblogs.com/haorong/p/10730301.html
Copyright © 2020-2023  润新知