• 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下


    对“正则表达式”的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串。

    grep/egrep

    该命令的格式:grep [-cinvABC] 'word' filename,其常用的选项如下所示。

    -c:表示打印符合要求的行数。

    -i:表示忽略大小写。

    -n:表示输出符合要求的行及其行号。

    -v:表示打印不符合要求的行。

    -A:后面跟一个数字(有无空格都可以),例如-A2表示打印符合要求的行以及下面2行

    -B:后面跟一个数字,-B2表示打印符合要求的行以及上面2行。

    -C:后面跟一个数字,-C2表示打印符合要求的行以及上下各2行。

    -r:遍历所有子目录。

     1 [root@lizhipeng01 ~]# mkdir grep
     2 [root@lizhipeng01 ~]# cd grep/
     3 [root@lizhipeng01 grep]# cp /etc/passwd .
     4 [root@lizhipeng01 grep]# ls
     5 passwd
     6 [root@lizhipeng01 grep]# pwd
     7 /root/grep
     8 [root@lizhipeng01 grep]# ls
     9 passwd
    10 [root@lizhipeng01 grep]#  grep 'nologin' passwd
    11 bin:x:1:1:bin:/bin:/sbin/nologin
    12 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    13 adm:x:3:4:adm:/var/adm:/sbin/nologin
    14 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    15 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    16 operator:x:11:0:operator:/root:/sbin/nologin
    17 games:x:12:100:games:/usr/games:/sbin/nologin
    18 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    19 nobody:x:99:99:Nobody:/:/sbin/nologin
    20 avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    21 dbus:x:81:81:System message bus:/:/sbin/nologin
    22 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    23 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    24 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    25 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    26 user4:x:1006:1005::/home/lizhipeng001:/sbin/nologin

    [root@lizhipeng01 grep]# grep -c 'nologin' passwd    显示多少行带有nologin
    16
    [root@lizhipeng01 grep]# grep -n 'nologin' passwd    显示行号,该行带有nologin
    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
    9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10:operator:x:11:0:operator:/root:/sbin/nologin
    11:games:x:12:100:games:/usr/games:/sbin/nologin
    12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13:nobody:x:99:99:Nobody:/:/sbin/nologin
    14:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    15:dbus:x:81:81:System message bus:/:/sbin/nologin
    16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    17:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    25:user4:x:1006:1005::/home/lizhipeng001:/sbin/nologin

    [root@lizhipeng01 grep]# grep -vni 'nologin' passwd  v取反,显示不带有nologin的行
    1:root:x:0:0:root:/root:/bin/bash
    6:sync:x:5:0:sync:/sbin:/bin/sync
    7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    8:halt:x:7:0:halt:/sbin:/sbin/halt
    20:lizhipeng:x:1000:1000::/home/lizhipeng:/bin/bash
    21:user1:x:1001:1001::/home/user1:/bin/bash
    22:lzp:x:1002:1003::/home/lzp:/bin/bash
    23:user2:x:1003:1006::/home/user2:/bin/bash
    24:user3:x:1004:1005::/home/user3:/bin/bash
    26:user5:x:1007:1007::/home/user5:/bin/bash

    [root@lizhipeng01 grep]# grep -r 'root' /etc/ > /tmp/grep.log
    [root@lizhipeng01 grep]# grep passwd /tmp/grep.log
    /etc/passwd:root:x:0:0:root:/root:/bin/bash
    /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
    /etc/passwd-:root:x:0:0:root:/root:/bin/bash
    /etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin
    /etc/postfix/main.cf:# the system passwd file in the chroot jail is just not practical.

    [root@lizhipeng01 grep]# grep -nA2 'root' passwd  -nA2,n显示行号,A2,含有root的行以及下面2行
    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
    --
    10:operator:x:11:0:operator:/root:/sbin/nologin
    11-games:x:12:100:games:/usr/games:/sbin/nologin
    12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

    [root@lizhipeng01 grep]# grep -nB2 'root' passwd    -B含有'root'的行,以及上面2行
    1:root:x:0:0:root:/root:/bin/bash
    --
    8-halt:x:7:0:halt:/sbin:/sbin/halt
    9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10:operator:x:11:0:operator:/root:/sbin/nologin

    [root@lizhipeng01 grep]# grep -nC2 'root' passwd    -C含有'root'的行,以及上下各2行
    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
    --
    8-halt:x:7:0:halt:/sbin:/sbin/halt
    9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10:operator:x:11:0:operator:/root:/sbin/nologin
    11-games:x:12:100:games:/usr/games:/sbin/nologin
    12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

     
    [root@lizhipeng01 grep]# grep '[0-9]' passwd  过滤出含有数字的行

    [root@lizhipeng01 grep]# grep -v '[0-9]' passwd  带数字的都不要

    [root@lizhipeng01 grep]# grep -n '^#' passwd  过滤出以#开头的行

    [root@lizhipeng01 grep]# grep -nv '^#' passwd 过滤不是以#开头的行

    [root@lizhipeng01 grep]# cp /etc/inittab .
    [root@lizhipeng01 grep]# ls
    inittab passwd
    [root@lizhipeng01 grep]# vim inittab
    [root@lizhipeng01 grep]# grep -v '^#' inittab    过滤不是以#开头的行
    adadad
    jij
    11111

    [root@lizhipeng01 grep]# grep 'r.o' passwd             .表示任意一个字符
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin     

    [root@lizhipeng01 grep]# grep 'o*o' passwd            *表示零个或多个*前面的字符

    [root@lizhipeng01 grep]# grep 'o{2}' passwd   {2},表示前面的字符要重复的次数
    root:x:0:0:root:/root:/bin/bash
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    [root@lizhipeng01 grep]# grep -E 'o{2}' passwd    -E,就可以去掉脱意
    root:x:0:0:root:/root:/bin/bash
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    [root@lizhipeng01 grep]# egrep 'o+o' passwd          +表示匹配1个或者多个+前面的字符,这个+是不支持被grep直接使用的。
    root:x:0:0:root:/root:/bin/bash
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    [root@lizhipeng01 grep]# egrep 'o?' passwd            ?表示匹配0个或1个前面的字符

    [root@lizhipeng01 grep]# egrep 'aa|oo|11' passwd     表示匹配要么匹配字符串aa,要么oo,要么11
    root:x:0:0:root:/root:/bin/bash
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    [root@lizhipeng01 grep]# egrep 'r(oo|at)o' passwd
    operator:x:11:0:operator:/root:/sbin/nologin

  • 相关阅读:
    .NET Core 3.0之创建基于Consul的Configuration扩展组件
    .NET Core 3.0之深入源码理解Configuration(三)
    .NET Core 3.0之深入源码理解Configuration(二)
    .NET Core 3.0之深入源码理解Configuration(一)
    python __getattr__ & __getattribute__ 学习
    nginx+uwsgi+flask+supervisor 项目部署
    Read a large file with python
    MySQL 基础回顾(2020/06/14修改)
    Linux运维: Rsync同步数据(ubuntu16.04+windows10)
    斐波那契数列的5种python实现写法
  • 原文地址:https://www.cnblogs.com/sisul/p/8280756.html
Copyright © 2020-2023  润新知