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 @   那就凑个整吧  阅读(51)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示