grep 命令速查卡(收藏版)

1 基本语法

grep [选项] '模式' [文件...]

无文件时从标准输入读取,支持管道。


2 高频选项(30 秒记忆)

选项
一句话作用
示例
-i
忽略大小写
grep -i error log
-v反选
——排除匹配行
grep -v '^#' nginx.C++onf
-n
输出行号
grep -n 'TODO' *.py
-c只计数grep -c '200' access.log
-o
仅打印匹配部分
grep -oE '\bip=\d+\.\d+\.\d+\.\d+'
-w
整词匹配
grep -w 'root' /etc/passwd
-r/-R递归
目录
grep -R 'secret' ./src/
-l
只列文件名
grep -Rl 'main' .
-A n
匹配行后 n 行
grep -A 3 'Exception' app.log
-B n
匹配行前 n 行
grep -B 2 'start' script.sh
-C n
前后各 n 行
grep -C 5 'panic' core.log
-E
启用扩展正则
等同于 egrep
-P
启用 Perl 正则
grep -P '\d{4}-\d{2}-\d{2}'
-q静默
模式(shell 判断)
grep -q 'SUCCESS' log && echo ok
--color=auto
高亮匹配
grep --color=auto 'ERROR' log



3 正则 10 条就够

符号
作用
栗子
^
行首
^#
 以 # 开头
$
行尾
500$
 以 500 结尾
.
任意单个字符
h.t
 匹配 hot、hut
*
前一个字符 ≥0 次
ab*
 匹配 a、ab、abb
+
前一个字符 ≥1 次(需 -E
ab+
{m,n}
次数区间
[0-9]{4}
 匹配 4 位数字
[]
字符集合
[Tt]cp
 匹配 tcp 或 Tcp
[^]
反向集合
[^0-9]
 非数字
\b
单词边界
\bword\b
|
或(需 -E
cat|dog


4 复制即可用的 5 个场景

  1. 查日志并标行号
    grep -n 'ERROR' app.log

  2. 统计 404 出现次数
    grep -c ' 404 ' access.log

  3. 排除所有注释行
    grep -v '^#' config.yml

  4. 递归找包含**main**的源码文件
    grep -Rl --include='*.Go' 'func main' .

  5. 查看匹配行及前后 2 行
    grep -C 2 'panic' core.log


把这张卡放进收藏夹,90% 的 grep 需求都能秒解决。