zoukankan      html  css  js  c++  java
  • 正则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字符

      

      

  • 相关阅读:
    Kubenetes环境搭建笔记
    Python+Robot Framework实现UDS诊断自动化测试
    Python实现CAN总线J1939报文接收、发送
    [转载]从SQL 2008 复制数据及对像到SQL 2000 的方法
    推荐移动应用:群落(Groupcells)——全球第一款基于图片组的近场社交电子商务平台
    [缓存]迅雷下载原理
    HP大中华区总裁孙振耀退休感言
    [缓存]HTTP协议中的TranferEncoding:chunked编码解析
    [转载]SQL 2008到2005和2000版本的转换
    [学习]SVM入门(一)
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/8290274.html
Copyright © 2011-2022 走看看