插件窝 干货文章 Linux grep命令的语法是什么

Linux grep命令的语法是什么

匹配 递归 grep 行号 651    来源:    2025-04-25

grep 是 Linux/Unix 中强大的文本搜索工具,用于在文件或输入流中查找匹配指定模式的行。以下是其基本语法和常见用法:


基本语法

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

核心参数

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

常见用法示例

  1. 基本搜索

    grep "error" /var/log/syslog      # 在文件中搜索 "error"
    
  2. 忽略大小写

    grep -i "warning" file.txt        # 匹配 "warning"、"Warning" 等
    
  3. 递归搜索目录

    grep -r "main()" /path/to/code/   # 递归搜索目录中的所有文件
    
  4. 统计匹配行数

    grep -c "404" access.log          # 统计出现 "404" 的行数
    
  5. 显示行号及上下文

    grep -n -A2 "Exception" debug.log # 显示行号及匹配行后2行
    
  6. 使用正则表达式

    grep -E "[0-9]{3}-[0-9]{4}" data.txt  # 匹配电话号码格式(如 123-4567)
    
  7. 从其他命令管道输入

    dmesg | grep "USB"               # 搜索 `dmesg` 输出中的 "USB"
    
  8. 全词匹配

    grep -w "word" file.txt          # 仅匹配独立单词 "word"
    

注意事项

  • 若搜索模式包含特殊字符(如 $, *, [ 等),需用单引号或转义符(\)。
  • 使用 -E 启用扩展正则时,支持 +, |, () 等高级语法。

进阶技巧

  • 多模式匹配
    bash grep -e "pattern1" -e "pattern2" file.txt
  • 排除目录(递归时)
    bash grep -r --exclude-dir=".git" "text" /path/

掌握 grep 能极大提升文本处理效率,建议结合 man grep 深入学习!