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 外其他字符的行

相关推荐
tokepson4 小时前
Mysql下载部署方法备份(Windows/Linux)
linux·服务器·windows·mysql
zz_nj6 小时前
工作的环境
linux·运维·服务器
极客先躯6 小时前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
suijishengchengde7 小时前
****LINUX时间同步配置*****
linux·运维
qiuqyue7 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI7 小时前
Linux 操作系统简介
linux
南烟斋..8 小时前
GDB调试核心指南
linux·服务器
爱跑马的程序员8 小时前
Linux 如何查看文件夹的大小(du、df、ls、find)
linux·运维·ubuntu
oMcLin10 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu
Qinti_mm11 小时前
Linux io_uring:高性能异步I/O革命
linux·i/o·io_uring