跳到主要内容

Grep 命令速查表

本速查表收录了 grep 及其变体 egrep/fgrep 最常用的操作,涵盖基础搜索、递归查找、上下文查看、正则匹配、输出格式化以及文件过滤等场景。适合日常文本搜索与日志分析。

更新: 2026-07-16·33 条命令

基本操作 (Basic)

基础搜索语法与常用选项。

``bash # 在文件中搜索字符串(区分大小写) grep "error" app.log

# 忽略大小写搜索 grep -i "error" app.log

# 显示行号 grep -n "error" app.log

# 反向匹配(显示不包含的行) grep -v "debug" app.log

# 精确匹配整个单词 grep -w "error" app.log

# 精确匹配整行 grep -x "ERROR: Connection timeout" app.log

# 统计匹配行数 grep -c "error" app.log

# 只显示匹配的文件名 grep -l "error" *.log

# 显示不匹配的文件名 grep -L "error" *.log

# 只输出匹配的部分 grep -o "[0-9]\\+" app.log

# 限制匹配数量 grep -m 5 "error" app.log

# 静默模式(只返回退出码) grep -q "pattern" file && echo "Found" `

在目录树中递归搜索文件。

`bash # 递归搜索当前目录 grep -r "TODO" .

# 递归搜索(跟随符号链接) grep -R "TODO" /etc/

# 只显示文件名 grep -rl "function" src/

# 只显示文件名(反向) grep -rL "error" logs/

# 从文件读取模式 grep -f patterns.txt target.log

# 统计每个文件中的匹配数 grep -rc "import" src/

# 搜索多个模式 grep -e "ERROR" -e "FATAL" app.log

# 结合 find 使用 find . -name "*.py" -exec grep "def " {} + `

上下文控制 (Context)

显示匹配行的前后文。

`bash # 显示匹配后 2 行 grep -A 2 "Exception" stacktrace.log

# 显示匹配前 2 行 grep -B 2 "ERROR" app.log

# 显示匹配前后各 3 行 grep -C 3 "timeout" app.log

# 分组显示,用 -- 分隔每组 grep -C 2 "error" log.txt

# 高亮匹配内容 grep --color=always "pattern" file `

正则表达式 (Regular Expression)

使用扩展正则和 Perl 兼容正则。

`bash # 扩展正则表达式(ERE) grep -E "[0-9]{3}-[0-9]{4}" phone.txt

# Perl 兼容正则(PCRE) grep -P "\\d{3}-\\d{4}" phone.txt

# 行首匹配 grep "^ERROR" app.log

# 行尾匹配 grep "done$" build.log

# 匹配多个字符之一 grep -E "gr[ae]y" colors.txt

# 匹配任意字符 grep "f..l" words.txt

# 匹配重复 grep -E "go+" pattern.txt

# 匹配可选字符 grep -E "colou?r" colors.txt

# 匹配特定数量 grep -E "\\d{3,5}" numbers.txt

# 单词边界 grep -E "\\berror\\b" text.txt

# 逻辑或匹配 grep -E "cat|dog|bird" animals.txt

# 忽略二进制文件 grep -I "text" binary_file `

输出控制 (Output Control)

格式化和管理 grep 输出。

`bash # 显示文件名(多文件时默认开启) grep -H "pattern" file1 file2

# 不显示文件名 grep -h "pattern" file1 file2

# 空字节分隔输出(配合 xargs -0) grep -rlZ "pattern" . | xargs -0 rm

# 彩色输出(always/auto/never) grep --color=auto "pattern" file

# 静默模式,仅检查是否存在 grep -q "pattern" file && echo "exists"

# 输出对齐,使用 tab 分隔 grep -n "pattern" file

# 管道传送到其他命令 grep "error" app.log | cut -d' ' -f1

# 多个 grep 组合 grep "ERROR" app.log | grep -v "timeout" | head -20

# 在历史命令中搜索 history | grep "docker"

# 结合 wc 统计 grep -c "pattern" file.log

# 结合 sort 去重 grep -o "\\b[A-Z]\\+\\b" file | sort | uniq -c | sort -rn `

文件过滤 (File Filtering)

控制 grep 搜索哪些文件和目录。

`bash # 仅搜索特定文件类型 grep -r --include="*.py" "class" .

# 包含多种文件类型 grep -r --include="*.{js,ts}" "import" .

# 排除特定文件 grep -r --exclude="*.min.js" "function" .

# 排除特定文件(从文件读取) grep -r --exclude-from=ignore.txt "pattern" .

# 排除目录 grep -r --exclude-dir=node_modules "require" .

# 排除多个目录 grep -r --exclude-dir={node_modules,.git,dist} "pattern" .

# 仅搜索匹配 glob 的文件 grep -r --include="*.log" "ERROR" /var/log/

# 在二进制文件中搜索(显示文本部分) grep -a "text" binary.exe

# 不搜索二进制文件 grep -rI "pattern" . ``

基本操作(10)

命令难度
grep "error" app.log
在文件中搜索字符串(区分大小写)
基础
grep -i "error" app.log
忽略大小写搜索
基础
grep -n "error" app.log
显示匹配行的行号
基础
grep -v "debug" app.log
反向匹配,显示不包含模式的行
基础
grep -w "error" app.log
精确匹配整个单词
基础
grep -x "ERROR: Connection timeout" app.log
精确匹配整行
中级
grep -l "error" *.log
只显示包含匹配的文件名
基础
grep -L "error" *.log
显示不包含匹配的文件名
中级
grep -q "pattern" file && echo "Found"
静默模式,仅通过退出码判断是否匹配
中级
grep -f patterns.txt target.log
从文件中读取搜索模式列表
中级

输出控制(7)

命令难度
grep -c "error" app.log
统计匹配行数
基础
grep -o "[0-9]\\+" app.log
只输出匹配的部分而非整行
中级
grep -m 5 "error" app.log
限制匹配输出数量
中级
grep --color=always "pattern" file
高亮显示匹配内容
基础
grep -H "pattern" file1 file2
强制显示文件名
基础
grep -h "pattern" file1 file2
不显示文件名
基础
grep -rlZ "pattern" . | xargs -0 rm
空字节分隔输出,配合 xargs -0 处理特殊文件名
高级

递归搜索(3)

命令难度
grep -r "TODO" .
递归搜索当前目录
基础
grep -R "TODO" /etc/
递归搜索并跟随符号链接
中级
grep -rc "import" src/
递归搜索并统计每个文件的匹配数
中级

正则(4)

命令难度
grep -e "ERROR" -e "FATAL" app.log
搜索多个模式(逻辑或)
中级
grep -E "[0-9]{3}-[0-9]{4}" phone.txt
使用扩展正则表达式(ERE)
中级
grep -P "\\d{3}-\\d{4}" phone.txt
使用 Perl 兼容正则(PCRE)
高级
grep -E "cat|dog|bird" animals.txt
逻辑或匹配多个模式
中级

上下文(3)

命令难度
grep -A 2 "Exception" stacktrace.log
显示匹配后的 2 行上下文
基础
grep -B 2 "ERROR" app.log
显示匹配前的 2 行上下文
基础
grep -C 3 "timeout" app.log
显示匹配前后各 3 行上下文
基础

文件过滤(6)

命令难度
grep -r --include="*.py" "class" .
仅搜索 Python 文件
中级
grep -r --exclude="*.min.js" "function" .
排除匹配 glob 的文件
中级
grep -r --exclude-dir=node_modules "require" .
排除指定目录
中级
grep -r --exclude-dir={node_modules,.git,dist} "pattern" .
排除多个目录
中级
grep -I "text" binary_file
忽略二进制文件
中级
grep -a "text" binary.exe
在二进制文件中搜索(视为文本)
高级

常见问题

本速查表数据整理自各工具官方文档。最后更新: 2026-07-16。