shell编程:grep - 文本搜索利器(3)

目录

基本正则表达式(BRE)

[行首匹配 - 查找以指定字符串开头的行](#行首匹配 - 查找以指定字符串开头的行)

[行尾匹配 - 查找以指定字符串结尾的行](#行尾匹配 - 查找以指定字符串结尾的行)

[任意字符 - 查找以"T"开头,第二个字符任意,第三个字符是"h"的模式](#任意字符 - 查找以"T"开头,第二个字符任意,第三个字符是"h"的模式)

[重复字符 - 查找包含 0 个或多个指定字符的行](#重复字符 - 查找包含 0 个或多个指定字符的行)

[字符集 - 查找包含 a、b 或 c 的行](#字符集 - 查找包含 a、b 或 c 的行)

[字符范围 - 查找包含小写字母的行](#字符范围 - 查找包含小写字母的行)

[排除字符集 - 查找不包含 a、b、c 的行](#排除字符集 - 查找不包含 a、b、c 的行)


基本正则表达式(BRE)

行首匹配 - 查找以指定字符串开头的行

grep "^This" file.txt
表示在file.txt文件中匹配以 This 开头行

详细解释
• ^:行首锚点 (grep默认是处理行的)
• 匹配以"This"开头的行
• 不匹配行中间的"This"

行尾匹配 - 查找以指定字符串结尾的行

grep "file\." file.txt 表示在file.txt文件中匹配以file.结尾的行 ![](https://i-blog.csdnimg.cn/direct/6983ff409e7c43f0a03ca51032eab60c.png) **详细解释** : • \\.:转义点号,匹配字面意义的"."(否则.匹配任意字符) ![](https://i-blog.csdnimg.cn/direct/bce856ea7c34415a89b1ffa2640833b4.png) 在这个示例中如果给 . 不加 / 转义字符,则 . 表示一个任意字符,则这条命令表示匹配以file再跟一个任意字符结尾的行 • :行尾锚点
• 匹配以"file."结尾的行

任意字符 - 查找以"T"开头,第二个字符任意,第三个字符是"h"的模式

grep "T.h" file.txt
在file.txt文件中匹配包含以T开始,以h结尾的长度为3字符的行

详细解释
• .:匹配任意单个字符(换行符除外)
• 匹配"Thh"、"Tah"、"T h"等
• 三个字符的模式:T + 任意字符 + h

重复字符 - 查找包含 0 个或多个指定字符的行

grep "a*" file.txt
在file.txt文件中查找包含0个或多个a字符的行

详细解释
• *:匹配前面的字符 0 次或多次
• "a*"匹配空字符串或连续的 a
• 几乎所有行都会匹配,因为*可以匹配 0 个 a

字符集 - 查找包含 a、b 或 c 的行

grep "[abc]" file.txt
详细解释
• [abc]:字符集合,匹配其中任意一个字符
• 匹配包含 a 或 b 或 c 的行
• 方括号内的字符是"或"关系

字符范围 - 查找包含小写字母的行

grep "[a-z]" file.txt
表示再file.txt文件中查找包含小写字母的行

如果在 grep 后再加个 -i 选项,就表示不区分大小写,查找所有字母所在的行
详细解释
• [a-z]:字符范围,匹配 a 到 z 之间的任意小写字母
• 等价于[abcdefghijklmnopqrstuvwxyz]
• 匹配包含任何小写字母的行

排除字符集 - 查找不包含 a、b、c 的行

grep "[^abc]" file.txt
表示在 file.txt 文件中查找不包含a或b或c的行

详细解释
• [^abc]:排除字符集,匹配不包含 a、b、c 的任意字符
• 方括号内以^开头表示否定
• 匹配包含除 a、b、c 外其他字符的行

相关推荐
开开心心就好23 分钟前
免费卸载工具,可清理残留批量管理启动项
linux·运维·服务器·windows·随机森林·pdf·1024程序员节
智算菩萨31 分钟前
摩擦电纳米发电机近期进展的理论脉络梳理:从接触起电到统一建模与能量转换
linux·人工智能·算法
Lbwnb丶33 分钟前
检测服务器是否是虚拟化,如KVM,VM等
linux·运维·服务器
老猿讲编程38 分钟前
【车载信息安全系列4】基于Linux中UIO的HSE应用实现
linux·运维·服务器
蓝晶之心2 小时前
Linux rsync ssh方式数据备份
linux·运维·服务器
ss2732 小时前
Java线程池全解:工作原理、参数调优
java·linux·python
fengyehongWorld3 小时前
Linux sudo命令
linux·运维·服务器
JiMoKuangXiangQu3 小时前
Linux 内存管理:页表管理简析
linux·mmu·内存管理·页表管理
WG_173 小时前
Linux:缓冲区_glibc封装
linux·运维·服务器
番知了3 小时前
Ubuntu 22.04 常用命令清单
linux·运维·ubuntu