码迷,mamicode.com
首页 > 其他好文 > 详细

grep命令

时间:2018-04-26 01:01:52      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:grep

正则
  • 正则就是一串有规律的字符串(包括一些特殊符号的字符串)
  • 掌握好正则对于编写shell脚本有很大的帮助
  • 各种编程语言中都有正则,原理都是一样的
  • 主要有grep/egrep,sed,awk四个工具

grep

  • grep [-cinvrABC] ‘word‘ filename
  • -c 行数
    [root@aminglinux-02 grep]# grep -c ‘nologin‘ passwd
    17
  • -n 显示行号
    [root@aminglinux-02 grep]# grep -n ‘nologin‘ 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
    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:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    16:dbus:x:81:81:System message bus:/:/sbin/nologin
    17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
    18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    19:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    21:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
  • -i不区分大小写
    [root@aminglinux-02 grep]# grep -in ‘nologin‘ 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
    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:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    16:dbus:x:81:81:System message bus:/:/sbin/nologin
    17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
    18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    19:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    21:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
  • -v取反
    [root@aminglinux-02 grep]# grep -vn ‘nologin‘ passwd
    1:root:x:0:0:root:/root:/bin/bash
    2:bin:x:1:1:bin:/bin:/sbin/NOlogin
    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
    22:aming:x:1000:1000::/home/aming:/bin/bash
    23:user1:x:1001:1001::/home/user1:/bin/bash
    24:user3:x:1004:1004::/home/user3:/bin/bash
  • -r遍历所有子目录,通常跟目录,查找目录下所有子目录和文件
  • -A后面跟数字,过滤出符合要求行及下面n行
  • -B同上,过滤出符合要求行及上面n行
  • -C同上,过滤出符合要求行及上下n行
    [root@aminglinux-02 grep]# grep -C2 ‘root‘ 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
    --
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  • grep ‘[0-9]‘ passwd 0-9任意一个数字的过滤,也可以加-v取反
    [root@aminglinux-02 grep]# grep ‘[0-9]‘ 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:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:998:996:User for polkitd:/:/sbin/nologin
    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    chrony:x:997:995::/var/lib/chrony:/sbin/nologin
    aming:x:1000:1000::/home/aming:/bin/bash
    user1:x:1001:1001::/home/user1:/bin/bash
    user3:x:1004:1004::/home/user3:/bin/bash
  • grep -v ‘^#‘ inittab过滤不以#开头的行
    [root@aminglinux-02 grep]# grep -v ‘^#‘ inittab 
    &&&*&*&*&*&*{}()
    aaaaaaaa
    dakdjahkjdhajkdhkaj
    1111111111111
  • grep ‘[^0-9]‘ inittab 过滤非数字的字符,符号^方括号里面取非外面是以什么开头
  • grep ‘^[^0-9]‘ inittab 过滤不以数字开头的行
  • grep ‘r.o‘ passwd 过滤以r开头o结尾的任意一个字符,包括点
    [root@aminglinux-02 grep]# grep ‘r.o‘ passwd
    root:x:0:0:root:/root:/bin/bash
    dadadnamnm:123333:dakh3:ddada:rao:233
    2222223:r>o:dahdjahj
    operator:x:11:0:operator:/root:/sbin/nologin
  • grep ‘r*o‘ passwd 过滤0个或多个*前面的字符,
    root@aminglinux-02 grep]# grep ‘r*o‘ 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
    dadadnamnm:123333:dakh3:ddada:rao:233
  • grep ‘.*‘ passwd ----- .*通配表示任意字符的一个或多个,所有包括特殊符号
    [root@aminglinux-02 grep]# grep ‘aming.*bash‘ passwd 
    aming:x90()[]:.;&^%$#@!:1000:1000::/home/aming:/bin/bash
  • grep ‘o\{2\}‘ passwd 两个o匹配,可以加-E参数不加脱义符或者用egrep(就是grep -E)
  • egrep ‘(oo){2}‘ passwd 两个oo匹配
    [root@aminglinux-02 grep]# egrep ‘(oo){2}‘ passwd 
    lp:x:4:7:lp:/var/sprrrttooo*&^oooool/lpd:/sbin/nologin
  • egrep ‘o+t‘ passwd 一个或多个+前面的字符匹配
    [root@aminglinux-02 grep]# egrep ‘o+t‘ passwd 
    root:x:0:0:root:/root:/bin/bash
  • egrep ‘o?t‘ passwd 零个或一个?前面的字符
    [root@aminglinux-02 grep]# egrep ‘o?t‘ passwd 
    root:x:0:0:root:/root:/bin/bash
    lp:x:4:7:lp:/var/sprrrttooo*&^oooool/lpd:/sbin/nologin
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  • egrep ‘root|nologin|pos‘ passwd |表示或者

    [root@aminglinux-02 grep]# egrep ‘root|nologin|pos‘ passwd 
    root:x:0:0:root:/root:/bin/bash
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/sprrrttooo*&^oooool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:998:996:User for polkitd:/:/sbin/nologin
    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  • 把一个目录下,过滤所有*.txt文档中含有a的行
    [root@aminglinux-02 grep]# grep -r --include="*.txt" ‘a‘ /root/
    /root/a.txt:      1 abc
    /root/a.txt:      1 abc 111,222
    /root/1.txt:root:x:0:0:root:/root:/bin/bash
    /root/1.txt:daemon:x:2:2:daemon:/sbin:/sbin/nologin
    /root/1.txt:adm:x:3:4:adm:/var/adm:/sbin/nologin
    /root/1.txt:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    /root/1.txt:halt:x:7:0:halt:/sbin:/sbin/halt
    /root/1.txt:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    /root/1.txt:operator:x:11:0:operator:/root:/sbin/nologin
    /root/1.txt:2222222aaaaaa
    /root/1.txt:4234234252sdadhkajhkj
    /root/1.txt:22aaa
    /root/2.txt:abc 111,222
    /root/2.txt:abc

grep命令

标签:grep

原文地址:http://blog.51cto.com/akui2521/2107878

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!