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

相关推荐
arvin_xiaoting29 分钟前
#zsh# #Ubuntu# 一键安装zsh、oh-my-zsh、常用插件
linux·ubuntu·elasticsearch
脏脏a39 分钟前
【Linux】Linux工具漫谈:yum 与 vim,高效操作的 “左膀右臂”
linux·运维·服务器
APItesterCris1 小时前
构建弹性数据管道:利用淘宝商品 API 进行流式数据采集与处理
linux·数据库·windows
艾莉丝努力练剑1 小时前
【C++STL :stack && queue (一) 】STL:stack与queue全解析|深入使用(附高频算法题详解)
linux·开发语言·数据结构·c++·算法
kyle~1 小时前
计算机系统---CPU的进程与线程处理
linux·服务器·c语言·c++·操作系统·计算机系统
NiKo_W2 小时前
Linux 进程通信——基于责任链模式的消息队列
linux·服务器·消息队列·责任链模式·进程通信
云飞云共享云桌面2 小时前
广东某模具制造工厂用一台云服务器供8个研发设计同时用
linux·运维·服务器·网络·自动化·制造
江公望3 小时前
Ubuntu /usr/include/x86_64-linux-gnu目录的作用浅谈
linux·ubuntu
报错小能手3 小时前
linux学习笔记(31)网络编程——TCP time_wait机制
linux·笔记·学习
Raymond运维3 小时前
MySQL源码编译安装
linux·数据库·mysql