Linux下shell基本命令之grep用法及示例

grep 是 Unix 和 Linux 系统中广泛使用的文本搜索工具,它允许用户搜索包含指定模式的文本行。以下是 grep 命令的基本用法及示例:

一、基本用法

bash 复制代码
grep [选项] 模式 [文件...]

二、常用选项

  • -i:忽略大小写。
  • -v:反向选择,显示不包含模式的行。
  • -n:显示匹配行的行号。
  • -l:显示包含匹配模式的文件名。
  • -L:显示不包含匹配模式的文件名。
  • -c:只输出匹配到的行数。
  • -w:只匹配整个单词。
  • -x:只匹配整行。
  • -r-R:递归搜索目录中的文件。
  • -A NUM:匹配行及后面 NUM 行一起显示。
  • -B NUM:匹配行及前面 NUM 行一起显示。
  • -C NUM:匹配行及前后各 NUM 行一起显示。

三、正则表达式

grep 支持正则表达式,这使得它可以进行复杂的文本搜索。例如:

  • .:匹配任意单个字符。
  • *:匹配前一个字符零次或多次。
  • ^:匹配行的开始。
  • $:匹配行的结束。
  • []:匹配括号内的任意一个字符。
  • |:表示或的关系,如 a|b 匹配 ab
  • ():分组,用于后向引用。

四、示例

搜索文本

假设有一个文件 example.txt,内容如下:

bash 复制代码
Hello World hello unix GREP is powerful

要在文件中搜索包含 "hello" 的行(忽略大小写),可以使用以下命令:

bash 复制代码
grep -i "hello" example.txt

输出:

bash 复制代码
Hello World hello unix

使用正则表达式

要在文件中搜索以 "G" 开头并以 "p" 结尾的单词,可以使用以下命令:

bash 复制代码
grep -w "\bG\w*p\b" example.txt

输出:

bash 复制代码
GREP is powerful

显示行号

要在文件中搜索包含 "World" 的行并显示行号,可以使用以下命令:

bash 复制代码
grep -n "World" example.txt

输出:

bash 复制代码
1:Hello World

反向选择

要在文件中搜索不包含 "unix" 的行,可以使用以下命令:

bash 复制代码
grep -v "unix" example.txt

输出:

bash 复制代码
Hello World GREP is powerful

递归搜索

要在目录 mydir 及其子目录中的所有文件中搜索包含 "error" 的行,可以使用以下命令:

bash 复制代码
grep -r "error" mydir/
相关推荐
PiaoKe___1 小时前
云手机原理与 Python 自动化实战:ADB 批量控制、任务调度与落地建议
服务器·arm开发·python·自动化
NamoAmitabha1287 小时前
libpng12-0 1.2.54-1ubuntu1.1 (amd64 binary) in ubuntu xenial
linux·ubuntu20.4
Madison-No78 小时前
搭建项目测试环境
linux·运维·服务器·python
吴声子夜歌9 小时前
Shell编程实例——编写安全的shell脚本(二)
linux·运维·shell
悠悠121389 小时前
微服务通信别只看性能:REST 与 gRPC 的 6 个选型判断和一次 502 故障复盘
运维·服务器
xiaoye-duck10 小时前
《Linux 网络编程》深入理解 IP 协议(二):网段划分、私有 IP 与 NAT 地址转换
linux·网络·ip
云老大-阿里云国际站代理商11 小时前
华为云国际站服务代理商:NAT网关怎么配?多台ECS共用公网IP要注意什么
服务器·华为云·云计算
zx_7414848111 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS11 小时前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
金士顿11 小时前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot