grep

''  不识别特殊字符
""  识别特殊字符
``  非常识别

ifconfig ens33 |grep netmask
netstat -nt |grep tcp
last |grep root 
    grep
        grep -v  显示不被模式匹配到的行
            grep -v ^$ file  非空行
            grep -v ^[[:space:]]$ file  去除空白行
            grep -v ^[[:space:]]*$ file
            grep -v "^$" /etc/profile |grep "^#"
            grep -v "/bin/bash$" /etc/psswd
        grep -n  显示匹配的行号
            grep -n ^$ file  空行行号
        grep -c  统计匹配的行数
        grep -o  仅显示匹配到的字符串
        grep -i  忽略字符大小写
            grep -i ^s /proc/meminfo
        grep -q  静默模式,不输出任何信息  
            echo $?:0  找到  用在生产中只关心找到or找不到
            echo $?:1  找不到
        grep -A#  后几行
        grep -B#  前几行
        grep -C#  前后各几行
        grep -e  多选项之间逻辑关系
        grep -w  匹配整个单词
        grep -E = egrep  
        grep -F = fgrep 
            grep root /etc/passwd |grep bash  包含root和bash
            grep -e root -e wang /etc/passwd  或者包含root,或者包含wang
        字符匹配
            .               匹配任意单个字符
            []              匹配指定范围内的任意单个字符
            [^]             匹配指定范围外的任意单个字符
            [:alnum:]       字母和数字(a-zA-Z0-9)
            [:alpha:]       大写、小写
            [:lower:] [:upper:]     小写 大写
            [:bank:]        空白字符
            [:space:]       空白字符(范围广)
            [:cntrl:]       不可打印的控制字符(退格、删除、警铃)
            [:graph:]       可打印的非空白字符
            [:print:]       可打印字符
            [:punct:]       标点符号
            [:digit:]       10进制数字 
            [:xdigit:]      16进制数字
        匹配次数
            *                   匹配前面字符任意次(含0次),尽可能长的匹配
            .*                  任意长度的任意字符  目标的前、中、后
            \? or ?             0/1次
            \+ or +             至少1次
            \{n\} or {n}        n次
            \{m,n\} or {m,n}    m次到n次
            \{,n\}              ≦n次
            \{n,\}              ≧n次
            \                   转义符
        位置锚定
            ^                   行首
            $                   行尾
            ^pattern$           匹配整行
              ^$                空行
              ^[[:space:]]$     空白行
            \< or \b            词首
            \> or \b            词尾
            \         整个单词
        分组
            \(\)    将一个或者多个字符捆绑在一起,当做一个整体进行处理 \1 \2 \3
            \(string1\+\(string2\)*\)
                \1  string1\+\(string2\)*
                \2  string2
            后项引用    引用前面分组括号中的模式所匹配字符,而非模式本身
            a\|b or a|b     a或b
            \(c\|m\)at or (c|m)at       cat或mat
        练习
            grep "^rpc\>" /etc/passwd |cut -d: -f1,7
            grep -o "\<[0-9]\{2,3\}\>" /etc/passwd
            grep "^[[:space:]]\+[^[:space:]]\{1,\}" /etc/grub2.cfg 
            netstat -tan |egrep -o "\\[[:space:]]+$"
            grep "\" /etc/passwd |cut -d: -f1,3  不知道是否正确
                cut -d ":" -f1,3 /etc/passwd |egrep "\b[[:digit:]]{1,3}\b"
            echo bash testbash basher sh nologin |xargs -n1 useradd
                chsh -s /sbin/nologin nologin
            egrep "(^.*)\>.*/\1$" /etc/passwd
                cut -d: -f1,7 /etc/passwd |grep "^\([[:alpha:]]\+\>\).*/\1$"
            df |egrep -o "[0-9]{1,3}%" |sort -nr  不知道是否正确
                df|grep "^/dev/sd" |tr -s " " % |cut -d% -f5 |sort -nr 
                df|grep "^/dev/sd" |egrep -o "\<[[:digit:]]+%" |tr -d % |sort -nr 
            egrep "^(mage|root|wang)\>" /etc/passwd |cut -d: -f3,7
            egrep -o '^.*\>\(\)' /etc/rc.d/init.d/functions
            egrep -o '^[[:alnum:]_]+\(\)' /etc/rc.d/init.d/functions
            basename file  
            dirname file
                echo /etc/rc.d/init.d/functions |grep -Eo "[^/]+$"    or "[[:alnum:]]+$"
                echo /etc/rc.d/init.d/ |grep -Eo "[^/]+/?$"    or "[[:alnum:]]+/?$"
                echo /etc/rc.d/init.d/functions |egrep -o "([[:alnum:].]*/)+"
            last |tr -s " " |cut -d " " -f1,3 |egrep "root.*[[:digit:]]\.+" |sort |uniq -c 
            echo {0..1000} |egrep -o "\<[0-9]\>"
                echo {0..1000} |egrep -o "\<[1-9][0-9]\>"
                echo {0..1000} |egrep -o "\<1[1-9][0-9]\>"
                echo {0..1000} |egrep -o "\<2[0-4][0-9]\>"
                echo {0..1000} |egrep -o "\<25[0-5]\>"
            IP地址过滤(特殊IP也被过滤)
        egrep -o (([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>
            ifconfig |grep "inet\" |tr -s " " |cut -d " " -f3 
            每个字母出现的次数和字母本身
                echo "welcome to lol linux" |grep -o '.' |sort |uniq -c |sort -nr       
    nmap
        没有关键字的搜索
        黑客——开机机器、关机机器、机器服务——>IP、版本
        rpm -ivh /misc/cd/Packages/nmap-6...
        nmap -v -sP 172.17.252.0/24  扫描此网段开机的机器(up/down)
        提取开机的IP地址
            nmap -v -sP 172.17.252.0/24 |grep -B1 "Host is up" |grep for |cut -d " " -f5 > ip.log  
            wc -l ip.log
        扫描主机的服务
            nmap -v -A 172.17.0.1

你可能感兴趣的:(grep)