Linux学习1 ----正则表达式&grep

正则表达式

  • 通配符是大部分普通命令都支持的,用于查找文件或目录
  • 正则表达式是通过三剑客命令在文件(数据流)中过滤内容

Linux 三剑客

  • grep:文本过滤工具
  • sed:stream editor,流编辑器;文本编辑工具
  • awk:Linux的文本报告生成器(格式化文本),Linux上是gawk

正则表达式分类

  • 基本正则表达式

    对应字符有^ $ . [] *

  • 扩展正则表达式

    基本正则加上 () {} ? + |

基本正则表达式

  • 匹配字符
  • 匹配次数
  • 位置锚定
符号 作用
^ 尖角号,用于模式的最左边,如 "^oldboy",匹配以oldboy单词开头的行
$ 美元符,用于模式的最右边,如"oldboy$",表示以oldboy单词结尾的行
^$ 组合符,表示空行
. 匹配任意一个且只有一个字符,不能匹配空行
\ 转义字符
* 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容
.* 组合符,匹配所有内容
^.* 组合符,匹配任意多个字符开头的内容
.*$ 组合符,匹配以任意多个字符结尾的内容
[abc] 匹配[]集合内的任意一个字符,a或b或c,可以写成[a-c]
[^abc] 匹配除了后面的任意字符,表示对[abc]的取反

扩展正则表达式

字符 作用
+ 匹配前一个字符1次或多次
[😕]+ 匹配括号内的字符(":" 或者"/")1次或多次
? 匹配前一个字符0次或1次
\ 表示或者,同时过滤多个字符串
() 分组过滤,被括起来的内容表示一个整体
a 匹配一个字符最少n次,最多m次
a 匹配一个字符最少n次
a 匹配一个字符正好n次
a 匹配一个字符最多m次

grep

  • 作用:文本搜索工具,根据用户指定的模式(过滤条件)对目标文本逐行匹配检查,打印匹配到的行

  • 模式:由正则表达式的 元字符 及 文本字符 所编写出的 过滤条件

语法:
grep [option] [pattern] file
命令   参数      匹配模式  文件数据
                  -i:ignorecase 忽略字符大小写
                  -o: 仅显示匹配到的字符本身
                  -v: --invert-match:显示不能被模式匹配到的行
                  -E:支持使用扩展的正则表达式元字符
                  -q:--quiet 静默模式,即不输出任何信息
  • grep命令里的 匹配模式 就是你想要找的东西,可以是普通的文字符号,也可以是正则表达式
-v 排除匹配结果
-n 显示匹配行与行号
-i 不区分大小写
-c 只统计匹配的行数
-E 使用egrep命令,用于扩展正则表达式
--color=auto 为grep过滤结果添加颜色
-w 只匹配过滤的单词
-o 只输出匹配的内容
  • 案例
grep -i "root" pwd.txt
grep  "root" pwd.txt -n -i #找出pwd.txt文本中含 root 字符串的行,且显示行号,不区分大小写
grep -i  "^i" pwd.txt #找出以i开头的行
grep -n "/bin/bash$" pwd.txt #找出所有以 /bin/bash 结尾的行,且显示行号
posted @   shog808  阅读(6)  评论(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语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示