• 正则grep


    什么是正则:

    正则就是一串有规律的字符串。

    正则三剑客:

    grep/egrep (egrep是grep的扩展),sed, awk

    grep

    grep过滤指定关键词

    [root@localhost grep]# grep 'nologin' passwd 

     

    -c 行数

    [root@localhost grep]# grep -c 'nologin' passwd 

    15

     

    -i 不区分大小写

    [root@localhost grep]# grep -i 'nologin' passwd 

    -n 显示行号

    [root@localhost grep]# grep -n 'nologin' passwd 

     

    -v 取反

    把除了nologin外的所有

    [root@localhost grep]# grep -vin 'nologin' passwd 

     

    -r遍历子目录和孙目录

    [root@localhost grep]# grep -r 'root' /etc/

     

    可以把过滤到的字符串重定向到文件中,然后从文件中查找相应的字符串

    [root@localhost grep]# grep -r 'root' /etc/  > /tmp/grep.log

    [root@localhost 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.

     

     

    -A 后面跟数字,过滤出符合要求的行以及下面n行

    例如当前符合要求的行,以及下面的n行

    [root@localhost grep]# grep  -nA2 'root' 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

    --

    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

     

     

    -B 也是一样,后面跟数字,列出符合要求的当前行,以及行上面的n行

    [root@localhost grep]# grep -nB2 'root' passwd 

    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

     

    -C 也是一样,后面跟数字,列出符合要求的当前行,以及行上面n行和行后面n

    [root@localhost grep]# grep -nC2 'root' 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

    --

    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@localhost grep]# grep '[0-9]' passwd 

     

    不显示文件中带有数字的字符

    grep -v '[0-9]' passwd

     

    -n是显示行数,-v取反,意思是不显示数字的,并且显示行数。

    [root@localhost grep]# grep  -vn  '[0-9]' /etc/inittab

    以井号开头的行:

    '^#'

    显示以井号开头的行

    [root@localhost grep]# grep -n '^#' inittab 

    显示不以井号开头的行:

    grep  -nv   '^#' inittab

    [root@localhost grep]# grep -nv '^#' inittab 

    9:jhsdjhsajdhjashdj

     

     

     

    显示非数字的字符:非数字字符高亮

    [root@localhost grep]# grep '[^0-9]' inittab 

    显示非数字开头的行:

    [root@localhost grep]# grep '^[^0-9]' inittab 

    ^ 放到[]方括号里面意思是取反,^放到开头意思是以什么字符开头。

     

     

    grep 'r.o' 表示  . 点表示任意一个字符

    [root@localhost grep]# grep 'r.o' passwd 

    root:x:0:0:root:/root:/bin/bash

    operator:x:11:0:operator:/root:/sbin/nologin

    grep ‘o*o’        * 号 表示o o中间n个字符

    [root@localhost grep]# grep  'o*o' passwd 

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    operator:x:11:0:operator:/root:/sbin/nologin

    grep   '.*' 会匹配所有字符。    .表示任意一个字符,*表示所有字符

     

     

    [root@localhost grep]# grep  'xiaobo.*' passwd 

    xiaobo:x:1000:1000::/home/xiaobo:/bin/bash

     

    grep  'o{2}'  passwd;   表示脱义;

    ‘o{2}’表示o出现两次。

     

    [root@localhost grep]# grep  'o{2}' passwd 

    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

     

     

     

     

     

    'o{0,3}' 从0到3都匹配,就是说o出现0次、1次、2次、3次;

    [root@localhost grep]# grep 'o{0,3}' passwd 

    去掉脱义符,用egrep 'o{2}' passwd 表示o出现两次

    [root@localhost grep]# egrep 'o{2}' passwd 

    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

     

    也可以用 grep  -E  'o{2}' passwd

    [root@localhost grep]# grep  -E 'o{2}' passwd 

    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

     

    grep  -E '(oo){2}'  passwd 表示出现4个o

    [root@localhost grep]# grep  -E 'o{4}' passwd 

    ooooqq

    osdaoooo

     

    grep    'o+o' passwd    +加号 表示1个或者多个o

    [root@localhost grep]# grep 'o+o' passwd 

    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

    ooooqq

    osdaoooo

    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

     

    不脱义,用egrep

    egrep  'o+o' passwd

     

    epgrep  'o+t'  passwd

    [root@localhost grep]# egrep 'o+t' passwd 

    root:x:0:0:root:/root:/bin/bash

    operator:x:11:0:operator:/root:/sbin/nologin

     

    egrep 'o?t'  passwd           ?问号表示0或1个 问号前面的字符

    [root@localhost grep]# egrep 'o?1o' passwd 

    postfix:x:89:89::/var/spool/postfix:/sbin/n1ogin

    cho1orony:x:998:996::/var/lib/chrony:/sbin/nologin

     

     

     

    grep -E   'root|nologin' passwd  匹配root或者nologin字符

    [root@localhost grep]# grep -E 'root|nologin' passwd 

    root:x:0:0:root:/root:/bin/bash

    daemon:x:2:2:daemon:/sbin:/sbin/nologin

    不区分大小写 -i

    grep -Ei   'root|nologin' passwd  匹配root或者nologin字符

      

      

  • 相关阅读:
    java设计模式单例模式
    C++了解free和delete
    ExtJs开发教程_001_Ext.data.Store使用方法详解
    ExtJs开发教程_002_如何使用ExtJs中的Ext.data.TreeStore
    C++操作符重载
    【hibernate】学习期间总结与记录
    ExtJs常识性知识解答
    学习指针一些基本操作
    简记mysql在tomcat下和hibernate一起使用,No suitable driver found for的问题
    很高兴今天学了点新东西,关于Cache
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/8290274.html
Copyright © 2020-2023  润新知