Linux文本三剑客
    grep:文本过滤(模式匹配工具)
    sed: 文本流编辑工具
    awk: 文本报告生成器


    grep命令:
    常用选项:
    —color=auto : 对匹配到的文本着色显示
    -v: 显示不能够被pattern匹配到的行
    -i:忽略大小写
    -o:仅显示匹配到的字符串
    -q:静默模式,不输出任何信息
    -A #: after 后#行
    -B #: before 前#行
    -C #: context 前后各#行
    -E : 使用ERE(使用扩展正则表达式) 等同于egrep

    1.显示/proc/meminfo文件中以大小s开头的行(2种方式)
    reg: ^[Ss]
    grep “^[Ss]” /proc/meminfo
    grep -i “^s” /proc/meminfo
    2.显示/etc/passwd文件中不以/bin/bash结尾的行
    reg: /bin/bash$
    grep -v “/bin/bash$” /etc/passwd
    3.如果root用户存在,显示其默认的shell程序 位置锚定
    [root@test tmp]# id root > /dev/null && grep “^root>“ /etc/passwd | cut -d: -f7
    |
    4.找出/etc/passwd中的两位或三位数 ; 贪婪匹配 —> 继续往后匹配
    reg: [[:digit:]]{2,3}
    [root@test tmp]# grep “\<[[:digit:]]{2,3}>“ /etc/passwd
    [root@test tmp]# grep “\<[0-9]{2,3}>“ /etc/passwd
    [root@test tmp]# grep -E “\<[0-9]{2,3}>“ /etc/passwd — 使用ERE
    5.显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符行
    reg : ^[[:space:]]+[^[:space:]]\
    [root@test tmp]# grep “^[[:space:]]+[^[:space:]]+“ /etc/grub2.cfg
    6.找出“netstat -tan”命令的结果中以’LISTEN’后跟0、1或多个空白字符结尾的行
    reg: LISTEN[[:space:]]$
    netstat -tan | grep “LISTEN[[:space:]]
    $”
    7.添加用户bash、testbash以及nologin(其shell为/sbin/nologin),然后找出/etc/passwd文件中用户名同shell名的行
    useradd bash && useradd testbash && useradd nologin -s /sbin/nologin
    bash:x:1010:1013::/home/bash:/bin/bash
    nologin:x:1012:1015::/home/nologin:/sbin/nologin

    reg: [[:alnum:]]+

    扩展正则:
    [root@test tmp]# grep -E “^(\<[[:alnum:]]+>).\1$” /etc/passwd
    基本正则:
    [root@test tmp]# grep “^(\<[[:alnum:]]+>).
    \1$” /etc/passwd
    \1 : 引用分组的内容;保证用户名和shell同名
    awk方式:
    [root@test tmp]# awk -F’[:/]’ ‘$1==$NF{print $0}’ /etc/passwd