zoukankan      html  css  js  c++  java
  • Shell三剑客_1.grep

    1.grep

    ・grep:global regular expression print__全局正则表达式输出。

    ・grep 命令用于查找(过滤)文件里符合条件的字符串。

    ・grep与正则表达式联系紧密。

    ■语法

    grep -[参数] <文件名>

    ■常用参数

    • -A<n(行数)> : 抽出并显示符合要查询内容的行,并显示该行之后n行的内容。
    • -B<n(行数)> : 抽出并显示符合要查询内容的行,并显示该行之前n行的内容。
    • -c : 显示符合要查询内容行的行数数。
    • -i  : 忽略字符大小。
    • -n  : 抽出并显示符合要查询内容的行,并在结果行前标示出该行的编号。
    • -v  : 抽出并显示符合要查询内容以外的所有行。

    ■实例

    ・grep -A<n(行数)> filename

    拷贝/etc/passwd到/home/yubx目录下

    [root@dell-ap-01 yubx]# cp /etc/passwd /home/yubx

    用vi/vim命令修改文件,修改后的passwd文件内容如下:

     1 root:x:0:0:root:/root:/bin/bash
     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
     5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6 sync:x:5:0:sync:/sbin
     7 dbus:x:81:81:System message bus:/:/sbin/nologin
     8 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
     9 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    10 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    11 chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    12 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
    13 tomcat:x:1000:1000::/home/tomcat:/bin/bash
    14 oracle:x:1001:1006::/home/oracle:/bin/bash
    15 tomcat0101abcaaaaccc
    16 1dddddddddkkkkkkkkkkkkkkkkkaaaaa
    17 2fffffffffffffffffff
    18 3aaaaaaaaaaaaaa
    19 4hhhhhhhhhhhhhhh
    20 5ggggggggggggggggggg
    21 ~ 
    22 ~ 

    命令执行结果:

     1 [root@dell-ap-01 yubx]# grep -A1 'tomcat' passwd
     2 tomcat:x:1000:1000::/home/tomcat:/bin/bash
     3 oracle:x:1001:1006::/home/oracle:/bin/bash
     4 tomcat0101abcaaaaccc
     5 1dddddddddkkkkkkkkkkkkkkkkkaaaaa
     6 [root@dell-ap-01 yubx]# grep -A3 'tomcat' passwd
     7 tomcat:x:1000:1000::/home/tomcat:/bin/bash
     8 oracle:x:1001:1006::/home/oracle:/bin/bash
     9 tomcat0101abcaaaaccc
    10 1dddddddddkkkkkkkkkkkkkkkkkaaaaa
    11 2fffffffffffffffffff
    12 3aaaaaaaaaaaaaa
    13 [root@dell-ap-01 yubx]# grep -A10 'tomcat' passwd
    14 tomcat:x:1000:1000::/home/tomcat:/bin/bash
    15 oracle:x:1001:1006::/home/oracle:/bin/bash
    16 tomcat0101abcaaaaccc
    17 1dddddddddkkkkkkkkkkkkkkkkkaaaaa
    18 2fffffffffffffffffff
    19 3aaaaaaaaaaaaaa
    20 4hhhhhhhhhhhhhhh
    21 5ggggggggggggggggggg
    22 [root@dell-ap-01 yubx]#

     解析:

    从文件内容中我们可以看到,含有”tomcat“字符的行有两行,分别是第13行和第15行。

    • -A1的场合,符合搜索内容的行被抽出,并且相对目标行后1行的内容也被抽出来了。
    • -A3的场合,符合搜索内容的行被抽出,并且相对目标行后3行的内容也被抽出来了。
    • -A10的场合,符合搜索内容的行被抽出,并且相对目标行后10行的内容也被抽出来了。(文件中最多只有5行)

     综上,-A<n>的意思就是抽出并显示符合检索内容的目标行,以及该目标行所有n行的内容。

     ・grep -B<n(行数)> filename

    作用:抽出并显示符合检索内容的目标行,以及该目标行所有n行的内容。

    ※:由于-B和-A的作用差不多,这里就不举例了。

    ・grep -c '要查询的字符串' filename

    作用:只打印匹配的文本行的行数,不显示匹配的内容。

    例:基于上面的passwd文件,执行下面命令。

    [root@dell-ap-01 yubx]# grep -c 'tomcat' passwd
    2

    上面的执行结果的意思是,passwd文件中有两行内容中含有”tomcat“字符串。

    ・grep -i  '要查询的字符串' filename

    作用:只打印匹配的文本行的行数,不显示匹配的内容。

    例:基于上面的passwd文件,追加一行如下内容。

    ... ... 
    
    4hhhhhhhhhhhhhhh
    5ggggggggggggggggggg
    TOMCAT123456uuusssaaadd
    ~    

    执行下面的命令:

    [root@dell-ap-01 yubx]# grep -i 'TOMCAT' passwd
    tomcat:x:1000:1000::/home/tomcat:/bin/bash
    tomcat0101abcaaaaccc
    TOMCAT123456uuusssaaadd
    [root@dell-ap-01 yubx]# grep -i 'tomcat' passwd
    tomcat:x:1000:1000::/home/tomcat:/bin/bash
    tomcat0101abcaaaaccc
    TOMCAT123456uuusssaaadd
    [root@dell-ap-01 yubx]# 

    ・grep -n  '要查询的字符串' filename

    作用:抽出并显示符合要查询内容的行,并在结果行前标示出该行的编号。

    例:基于上面的文件,执行下面的代码

    [root@dell-ap-01 yubx]# grep -n 'tomcat' passwd
    13:tomcat:x:1000:1000::/home/tomcat:/bin/bash
    15:tomcat0101abcaaaaccc
    [root@dell-ap-01 yubx]#

    上面执行结果中的「13、15」是目标行所在文件中的行编号。

    ・grep -v '要查询的字符串' filename

    作用:抽出并显示符合要查询内容以外的所有行。

    例:基于上面的文件,执行下面的代码

    [root@dell-ap-01 yubx]# grep -v 'tomcat' passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
    oracle:x:1001:1006::/home/oracle:/bin/bash
    1dddddddddkkkkkkkkkkkkkkkkkaaaaa
    2fffffffffffffffffff
    3aaaaaaaaaaaaaa
    4hhhhhhhhhhhhhhh
    5ggggggggggggggggggg
    TOMCAT123456uuusssaaadd
    [root@dell-ap-01 yubx]# 

    从上面的执行结果可以看出,含有"tomcat"的那两行没有被打印出来。

    ■写在最后

    这里只举了几个grep常用的,操作字符串的例子。

    这只是grep强大功能的冰山一角。

    还有很多参数这里并没有介绍。具体的参数以及参数作用可以用 「grep --help」查看。

    grep更强大的功能是和正则连用,并且很多参数可以组合使用。

    在后续的【linux正则】随笔中,还会陆续讲解grep功能。

    以上。

  • 相关阅读:
    windows系统历年高危漏洞
    安全产品分类
    防火墙
    UTM(统一威胁管理)
    ORA-39127: 调用 "WMSYS"."LT_EXPORT_PKG"."SCHEMA_INFO_EXP" 时发生意外错误
    oracle如何查看当前有哪些用户连接到数据库
    LINUX修改主机名
    删除Oracle用户及表空间
    Oracle AWR报告详细分析--比较详细
    RMAN优缺点及RMAN备份及恢复步骤
  • 原文地址:https://www.cnblogs.com/yubx/p/12506189.html
Copyright © 2011-2022 走看看