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

相关推荐
乌萨奇也要立志学C++3 小时前
【Linux】进程概念(五) 命令行参数与环境变量的深度解析
linux·运维·chrome
mjy_1114 小时前
硬件驱动——系统移植与环境搭建
linux·运维·服务器
忘梓.4 小时前
Linux的写作日记:Linux基础开发工具(一)
linux·运维·服务器
ZLRRLZ4 小时前
【Linux操作系统】Linux基础指令和权限
linux·运维·服务器
阿尔法哲1 天前
CentOS系统 OPENSSH一键升级脚本
linux·centos
做运维的阿瑞3 天前
一张脑图吃透Linux用户权限:useradd、usermod、umask、setfacl、chmod特殊位、chown、chage连招大全
linux
dessler4 天前
Hadoop HDFS-读写流程
linux·运维·hdfs
做运维的阿瑞5 天前
15 分钟图解 Linux 内核到发行版:运维选型不再纠结
linux
用户31187945592186 天前
Kylin Linux 10 安装 glib2-devel-2.62.5-7.ky10.x86_64.rpm 方法(附安装包)
linux