插件窝 干货文章 linux的grep怎么用

linux的grep怎么用

匹配 grep 文件 bash 734    来源:    2025-04-06

grep 是 Linux 中强大的文本搜索工具,用于在文件或标准输入中查找匹配指定模式的行。以下是详细的用法说明和常见示例:


基本语法

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

常用选项

选项 作用
-i 忽略大小写
-v 反向匹配(显示不包含模式的行)
-n 显示匹配行的行号
-c 统计匹配的行数(不显示具体内容)
-r-R 递归搜索目录中的文件
-l 仅显示包含匹配项的文件名
-w 全词匹配(避免部分匹配)
-A NUM 显示匹配行及其后NUM
-B NUM 显示匹配行及其前NUM
-C NUM 显示匹配行及其前后各NUM
-E 启用扩展正则表达式(等同于 egrep
-F 按字面字符串匹配(禁用正则,等同于 fgrep

常见用法示例

  1. 基本搜索
    在文件中查找包含 "error" 的行:

    grep "error" /var/log/syslog
    
  2. 忽略大小写
    搜索 "warning"(不区分大小写):

    grep -i "warning" file.txt
    
  3. 递归搜索目录
    在当前目录及子目录中查找 "main()"

    grep -r "main()" .
    
  4. 全词匹配
    只匹配完整的单词 "word"(避免匹配 "sword" 等):

    grep -w "word" file.txt
    
  5. 显示行号
    查找 "TODO" 并显示所在行号:

    grep -n "TODO" project/*
    
  6. 统计匹配次数
    统计文件中 "success" 出现的行数:

    grep -c "success" report.log
    
  7. 反向匹配
    显示不包含 "debug" 的行:

    grep -v "debug" app.log
    
  8. 多文件搜索
    在多个文件中查找 "config"

    grep "config" file1.txt file2.conf
    
  9. 使用正则表达式
    查找以 "192.168" 开头的 IP 地址:

    grep -E "^192\.168" /var/log/auth.log
    
  10. 结合管道
    过滤命令输出(例如查找正在运行的 nginx 进程):

    ps aux | grep nginx
    

高级技巧

  • 搜索多个模式(使用 -eegrep):

    grep -e "error" -e "fail" log.txt
    # 或使用扩展正则
    egrep "error|fail" log.txt
    
  • 排除特定文件(如不搜索 .log 文件):

    grep -r "pattern" --exclude="*.log" /path/
    
  • 仅显示匹配部分(而非整行):

    grep -o "user_[0-9]*" data.txt
    
  • 从文件读取模式(每行一个模式):

    grep -f patterns.txt target_file
    

注意事项

  1. 如果模式包含特殊字符(如 $, *, [ 等),需用单引号或转义符(\)包裹。
  2. 递归搜索时,使用 --include/--exclude 过滤文件类型。

通过灵活组合选项和正则表达式,grep 可以高效处理日志分析、代码搜索等任务。