当前位置: 首页 > article >正文

linux 命令 grep

grep 是 Linux 中用于在文件或输入流中搜索文本模式的强大命令,支持正则表达式。以下是它的核心用法和常见场景:

基本语法

grep [选项] "搜索模式" 文件名

常用选项

选项说明
-i忽略大小写
-v反向匹配(显示不包含模式的行)
-n显示匹配行的行号
-r 或 -R递归搜索目录下的所有文件
-l仅显示包含匹配项的文件名
-c统计匹配行的数量(而非具体内容)
-A NUM显示匹配行及其后 NUM 行(After)
-B NUM显示匹配行及其前 NUM 行(Before)
-C NUM显示匹配行及其前后各 NUM 行(Context)
-w精确匹配单词(避免部分匹配,如 -w "test" 不匹配 "testing")
-e指定多个模式(如 -e "err" -e "warn"

 grep -l 仅显示包含匹配项的文件名

正则表达式基础

  • ^ : 匹配行首(如 ^start 匹配以 "start" 开头的行)

  • $ : 匹配行尾(如 end$ 匹配以 "end" 结尾的行)

  • . : 匹配任意单个字符(如 a.c 匹配 "abc"、"a1c" 等)

  • * : 匹配前一个字符 0 次或多次(如 go*gle 匹配 "ggle"、"gogle"、"google")

  • \ : 转义特殊字符(如 \. 匹配实际的句点)

  • [abc] : 匹配括号内的任一字符(如 gr[ae]y 匹配 "gray" 或 "grey")

  • [^abc] : 匹配不在括号内的字符(反向匹配)

常见使用示例

在文件中搜索字符串

 grep "error" log.txt       # 查找包含 "error" 的行(区分大小写)
 grep -i "warning" log.txt  # 忽略大小写搜索 "warning"

递归搜索目录 

grep -r "main()" /path/to/code  # 在目录下所有文件中查找 "main()"

统计匹配行数

grep -c "success" report.log    # 统计包含 "success" 的行数 

显示行号及上下文 

grep -n -C 2 "crash" debug.log  # 显示匹配行及其前后各 2 行,并标注行号 

反向匹配(排除模式) 

 grep -v "info" messages.log     # 显示不包含 "info" 的行

 使用正则表达式

grep "^2023-10-" access.log    # 查找以 "2023-10- 开头的行(日期筛选)
grep "500$" response_codes.log # 查找以 500 结尾的行(HTTP 状态码)

注意事项

  1. 引号包裹模式:若模式包含空格或特殊字符(如 * $),需用单/双引号包裹。

  2. 文件名顺序:模式在前,文件名在后,避免混淆。

  3. 递归搜索权限:使用 -r 时确保对目标目录有读取权限。


http://www.kler.cn/a/588753.html

相关文章:

  • 拆解 “ES 已死“ 伪命题:Agentic RAG 时代搜索引擎的终极形态
  • Java 内存区域常见面试题
  • JVM常用概念之信任非静态final字段
  • Podman 1panel中容器管理docker替换为Podman
  • OpenSSL 的主要功能及其示例命令
  • 网络空间安全(31)安全巡检
  • 【eNSP实战】配置Easy IP
  • DataWhale 大语言模型 - 长上下文模型和新型架构
  • 排序算法——堆排序(四)
  • C++|构造函数和析构函数
  • java自带日志系统介绍(JUL)以及和Log4j 2、Logback、SLF4J不同日志工具的对比
  • leetcode日记(99)不同的子序列
  • PyTorch使用-张量的创建
  • CSS 知识点总结1
  • 【软考-架构】7、系统配置与性能评价
  • CAD球体密堆积3D插件V2.0
  • SpringBoot手动注册定时任务
  • ActiveMQ监听器在MQ重启后不再监听问题
  • Pytorch:Dataset的加载
  • 百度贴吧IP和ID是什么意思?怎么查看