Linux文本编辑三剑客之grep

news/2025/10/12 19:54:01/文章来源:https://www.cnblogs.com/chucz/p/19137118

Linux 文本编辑三剑客之 grep

Linux 文本处理三剑客是面试和后端工作中较为常见的。需要掌握:

  • grep:文本过滤、筛选
  • sed:文本编辑加工
  • awk:文本格式化输出

画板

本节内容基于正则表达式:

正则表达式

借助正则表达式可以快速匹配、过滤需要的字符串,在 Linux 上处理大量文本比较高效。

  • 一次处理一行
  • Linux 上只有文本处理工具三剑客(grep、sed、awk)常用,编程语言都有对应支持
  • 扩展正则是基本正则的补充,一般结合三剑客使用建议直接使用扩展正则的写法,简洁

基本正则

符号 作用
^ 模式匹配最左侧,^abc就是以abc开头
$ 模式匹配最右侧,abc$就是以abc结尾
^$ 组合符。空行
. 任意一个且只有一个字符,不匹配空行
* 匹配前一个字符0或多次,不单独使用
.* 组合符。匹配任意多个字符
^.* 组合符。匹配任意多个字符开头
.*$ 组合符。匹配任意多个字符结尾
\ 特殊字符还原本意,\.是小数点
[abc] 匹配集合内任意字符
[^abc] 匹配集合之外的字符
<> 定位单词的左侧和右侧。<deltaqin> 可以找出 deltaqin nb找不出deltaqinnb

扩展正则

符号 作用
+ 匹配前面字符一次或多次
[:@]+ 组合符。匹配[]内的字符一次或多次
? 匹配前面字符0次或1次
` `
() 分组过滤,括号内是一个整体
a{m,n} 前面的字符最少m最多n次
a{m,} 前面的字符最少m次
a{m} 前面的字符m次
a{,m} 前面的字符最多m次

具体使用还是要结合三剑客一起

Why grep

文本搜索工具,根据指定的过滤条件对文本逐行匹配

What grep

grep [option] [pattern] file
  • option:可选参数
    • -i 忽略ignore大小写
    • -v 显示不能被匹配的行
    • -E 使用正则表达式匹配
    • -n 显示行号
    • -c 统计匹配的行数
    • -o 只显示被匹配的关键字,一般用来计数
  • pattern:可以是普通文本字符,也可以是正则表达式

How grep--基本正则

i 开头的行

1653206849763-94a6cd25-e46c-44bb-a0fc-27e2471a5e9e.png

1653206882286-e14aa915-9bbf-4f0e-95bc-2c98ea4efb36.png

n 结尾的行

1653206943761-9db1418d-aa6e-41cd-8b0f-b9cf2b57f9ba.png

以特殊符号结尾的行

1653207096255-252050f3-77d3-466d-931c-b88c561c52e5.png

1653207121340-06956ffa-b89b-4ce7-99fb-a54e9daf0644.png

空行

1653207204921-3e05041f-aa78-4b2f-93a8-d21af29968fb.png

贪婪匹配

1653207451740-34d9e9ec-88c0-4eac-b8db-77fc13246b0f.png

匹配数字或者字符

1653207510033-1d936ffe-be16-4436-a0e9-710740502aaf.png

1653207548141-b5335045-fdbe-4889-a1b2-4d39564b6bd0.png

匹配小写之外的字符

1653207790987-8513a7ac-843b-4dd1-9487-6d8fed86b674.png

How grep--扩展正则

匹配1个或多个

1653208053744-ae91f2eb-dc49-4ede-a76e-977dfd0fb070.png

匹配0或1次

1653208082525-2a9002aa-0584-463d-80cf-8d50da5293cd.png

匹配自定义次

1653209729758-4a986089-2aac-480e-961e-c1cb36006df6.png

1653209712669-475972ac-3851-49f8-93d1-cae4b635ea77.png

匹配或

1653208121593-ee01f2a9-3d7e-470d-bc6e-c8e47b851b66.png

分组

  • 括号的内容当做整体来匹配

1653208394960-76061f60-03ee-41dc-bc2b-279cb53caa1b.png

分组与引用找出用户名和shell名相同的行

  • 括号的内容可以被引用
    • \1 是第一个括号中匹配的字符
    • \2是第二个括号中匹配的字符

1653208552866-bb438000-4892-4899-a6a5-a4aa240524d5.png

1653208851513-2260c140-4d25-4edd-8beb-23f372f937cf.png

^([^:]+).*\1$其中\>代表单词结尾

  • [^:]+ 冒号外的多个字符
  • ^[^:]+冒号外的多个字符开头的行
  • ^([^:]+\>) 冒号外的多个字符开头的行,并且匹配一个完整的单词
  • \1$ 结尾是前面括号的内容,这里就是用户名

常见使用案例

过滤root或者de开头的行,不区分大小写,并显示行号

1653221592428-a4227407-f4e2-49c9-af38-291171e2fede.png

精确过滤root或者deltaqi开头的行

1653221649226-877c31a2-a8a2-4133-aa6c-37107d826aeb.png

列出不以nologin结尾的行

1653221786745-22996165-d116-4d5d-b2e8-f91258dbbcbe.png

找到两位数或者三位数

错误写法,没有精确匹配

1653221943682-a707fe71-83bf-4244-8ce3-589530c29a84.png

1653221986777-004e85fc-bed3-442f-8388-d5787dc83c5c.png

至少一个空格开头,后面全是非空字符的行

1653222154790-b774f7be-ad57-4b70-a676-51790cc52d0d.png

1653222227201-dddfe114-ecff-49be-a2be-becb779b1640.png

找出文件所有的函数名

1653222335837-cec3a054-4dfa-4ee0-9d24-cdd202964fd4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux文本编辑三剑客之sed

Linux 文本编辑三剑客之 sedLinux 文本处理三剑客是面试和后端工作中较为常见的。需要掌握:grep:文本过滤、筛选 sed:文本编辑加工 awk:文本格式化输出本节内容基于正则表达式: 正则表达式 借助正则表达式可以快速…

做了项目经理才发现:上台发言,其实都有套路

在项目推进过程中,总有不少场合需要你上台发言:项目启动会、阶段汇报、庆功宴……这时,你得站在众人面前,清晰表达自己的想法。 有的人发言平淡无奇,内容枯燥,让人听得昏昏欲睡。而有的人一开口,就能吸引大家的…

占位符

a a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\ a\

什么是IO多路复用?

什么是IO多路复用? 多路复用也是面试比较常见的,尤其对于后端,因为很多中间件例如Redis、Nginx、Netty 以及jdk的 NIO 实现都用到了多路复用技术,作为实现高性能的重要底层手段是需要掌握的,下面总--分--总梳理一…

进程、线程和协程之间的区别和联系

进程、线程和协程之间的区别和联系 一、进程 进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以…

挣点小钱的副业(附带新手教程)0元的快乐

老话说得好,钱难挣,那啥难吃。一到发薪日,小花就得给花呗、抖付、美团月付、支付宝、余额宝“翻牌子”,生怕哪个逾期。最怕的就是月月光,还倒欠一屁股债。 双十一即将来临,你不知道的优惠券内部价格,还在傻傻用…

Linux文本编辑三剑客之awk

Linux 文本编辑三剑客之 awkLinux 文本处理三剑客是面试和后端工作中较为常见的。需要掌握:grep:文本过滤、筛选 sed:文本编辑加工 awk:文本格式化输出文章只列举常用的,不会完全把手册复述一遍本节内容基于正则表…

软考~高效的系统规划与管理师考试—知识篇—V2.0—第四章 IT 服务规划设计 — 2017 年 2018 年 2020 年 2022 年 2023 年

软考~高效的系统规划与管理师考试—知识篇—V2.0—第四章 IT 服务规划设计 — 2017 年 & 2018 年 & 2020 年 & 2022 年 & 2023 年pre { white-space: pre !important; word-wrap: normal !important; …

应用安全 --- 安卓安全 之 文件校验

应用安全 --- 安卓安全 之 文件校验文件校验就是在dex或so中使用代码验证文件的唯一性指纹比如md5,sha1 验证方法 修改文件的不重要的比特位打开验证如果app闪退表示存在校验

详细介绍:GitOps实战:ArgoCD+Tekton打造云原生CI/CD流水线

详细介绍:GitOps实战:ArgoCD+Tekton打造云原生CI/CD流水线pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

从“优化工具”到“价值生态”:多价值主体系统如何重塑AI价值对齐范式

从“优化工具”到“价值生态”:多价值主体系统如何重塑AI价值对齐范式 长期以来,人工智能价值对齐的讨论被禁锢在一个既定框架内:如何让AI的行为精准“符合”人类预设的单一或有限价值目标。从基于规则的硬编码到基…

2.2 深度学习(Deep Learning)

深度学习(Deep Learning) 深度强化学习(Deep RL)使用深度神经网络作为函数逼近器,从而能够学习状态–动作对的复杂表示。本节对深度学习进行简要概述,更多细节可参考 @Goodfellow2016。前馈神经网络(Feedforwar…

第十二篇

今天是10月12日,今天睡了个好觉,中午送了外卖,下午背了单词。

详细介绍:【ROS2学习笔记】节点篇:节点概述

详细介绍:【ROS2学习笔记】节点篇:节点概述2025-10-12 19:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

2.1 函数逼近(Function Approximation)

函数逼近(Function Approximation) 此前介绍的所有方法都是表格方法(tabular methods),即为每个状态–动作对存储一个值:要么是该动作的 Q 值,要么是该动作的偏好值。在大多数实际应用中,这样存储的值数量会迅…

VSCode code-snippets Note

VSCode code-snippets Note在使用 VSCode 作为 C++ 开发工具的时候,编写头文件的时候会有大量的冗余代码,使用 Code Snippets 中的 transform 可以大幅提高该过程的效率,于是这里总结一些 VSCode 中一些开发常用的 …

Elasticsearch 备份:snapshot 镜像使用篇

本文是 ES 备份的镜像使用篇,主要介绍了 snapshot 的备份恢复原理和使用细节。上一篇文章中,我们简要的列举了 Elasticsearch 备份 主要的几个方案,比对了一下各个方案的实现原理、优缺点和适用的场景。现在我们来看…

本次科研收获

不要害怕修改项目源代码,现在的AI Agent已经很强大了,可以直接把需求告诉他,让他改

2025.10.12 - 20243867孙堃2405

早上太阳照到窗台上,风轻轻的飘进来,把我没看完的书吹得翻了两页,感觉这会儿时间都变慢了。

git clone 克隆下载深度层级仓库最新源码而不是整个仓库

前言全局说明一、说明 1.1 环境: Windows 7 旗舰版 git version 2.9.0.windows.1二、命令原型 usage: git clone [<options>] [--] <repo> [<dir>]--depth <depth> create a shallow cl…