linux三剑客之grep

作用

  文本过滤器(根据文本内容过滤文件)

格式

  grep [参数] [匹配规则] [操作对象]

参数

 1 -n : 过滤文本时,将过滤出来的内容在文件内的行号显示出来
 2 -A : 匹配成功之后,将匹配行的后n行显示出来
 3 -B : 匹配成功之后,将匹配行的前n行显示出来
 4 -C : 匹配成功之后,将匹配行的前后各n行显示出来
 5 -c :  只显示匹配成功的行数
 6 -o :  只显示匹配成功的内容
 7 -v :  反向过滤
 8 -q :  静默输出
 9 -i : 忽略大小写
10 -l :  匹配成功之后,将文本的名称打印出来
11 -R|-r : 递归匹配 
12 -E : 使用拓展正则   等价于  egrep

  知识储备

$? : 上一行命令执行的结果,0代表执行成功,其他数字代表执行失败。
wc :  匹配行数
    -l : 打印匹配行数
    -c : 打印匹配的字节数

案例

案例1:在/etc/passwd文件中,匹配以ftp开头的行
        grep '^ftp' /etc/passwd

案例2:在/etc/passwd文件中,匹配以bash结尾的行
        grep 'bash$' /etc/passwd

案例3:匹配本机中有哪些ip
        ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'

案例4:要求将/etc/fstab中的去掉包含 # 开头的行,且要求 # 后至少有一个空格
        grep -vE '^#\ +' /etc/fstab

案例5:找出文件中至少有一个空格的行
        grep -E '\ +' xxx

案例6:将 nginx.conf 文件中以#开头的行和空行,全部删除 
        grep -vE '^\ *#|^$' /etc/nginx/nginx.conf

案例7:过滤出手机号
        [root@localhost ~]# echo "18612345678" |grep -E "(155|186|177)[0-9]{8}"
18612345678

案例8:过滤出邮箱
        [root@localhost ~]# echo "yuanshi@qq.com" | grep -E "[0-9a-zA-Z]+@[0-9a-z]+(\.com|\.cn|\.edu)"
yuanshi@qq.com    

 

 

  

posted @ 2021-12-20 20:31  那就凑个整吧  阅读(40)  评论(0编辑  收藏  举报