grep -i "word" file搜索时不区分大小写。
约 1023 字大约 3 分钟
2026-04-27
grep 是 Linux/macOS 中用于搜索文本的强大命令行工具。它可以在文件、目录或命令输出中查找指定内容,是日常排查问题、过滤日志和检索代码时非常常用的工具。
grep 是 Linux/macOS 中用于搜索文本的强大命令行工具。它可以在文件、目录或命令输出中查找指定内容,是日常排查问题、过滤日志和检索代码时非常常用的工具。
grep -i "word" file搜索时不区分大小写。
grep -n "word" file定位配置或日志时更方便。
grep -r "word" .在整个项目目录中查找内容。
grep -C 3 "ERROR" log匹配行前后各显示 3 行。
grep [选项] "搜索内容" 文件名其中:
搜索内容:要查找的文本或正则表达式文件名:要搜索的文件,可以是单个文件、多个文件或通配符匹配的文件选项:用于控制搜索方式,例如忽略大小写、显示行号、递归搜索等grep "hello" file.txt # 在文件中搜索 "hello"
grep "hello" *.txt # 在所有 .txt 文件中搜索
grep "hello" file1.txt file2.txt # 在多个文件中搜索grep -i "hello" file.txt # 忽略大小写
grep -n "hello" file.txt # 显示行号
grep -v "hello" file.txt # 反向匹配(不包含该词的行)
grep -c "hello" file.txt # 统计匹配行数
grep -l "hello" *.txt # 只显示匹配的文件名
grep -w "hello" file.txt # 精确匹配整个单词grep -r "hello" /path/to/dir # 递归搜索目录
grep -rl "hello" . # 递归搜索,只显示文件名grep -A 3 "hello" file.txt # 显示匹配行后 3 行
grep -B 3 "hello" file.txt # 显示匹配行前 3 行
grep -C 3 "hello" file.txt # 显示匹配行前后各 3 行grep "^hello" file.txt # 以 hello 开头的行
grep "hello$" file.txt # 以 hello 结尾的行
grep "h.llo" file.txt # . 匹配任意单个字符
grep "hel*o" file.txt # * 匹配前一字符零次或多次
grep -E "hello|world" file.txt # 扩展正则,匹配 hello 或 worldps aux | grep nginx # 查找 nginx 进程
cat log.txt | grep "ERROR" # 过滤日志中的错误
history | grep "git" # 搜索历史命令| 选项 | 功能 |
|---|---|
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向匹配 |
-r | 递归目录 |
-l | 只显示文件名 |
-c | 统计行数 |
-E | 扩展正则 |
-w | 全词匹配 |
grep 的核心作用是“从文本中找出符合条件的行”。日常使用时,可以先掌握 -i、-n、-v、-r、-l 这些高频选项,再逐步结合正则表达式和管道命令提升检索效率。
grep 最常见的用法不是孤立搜索一个单词,而是在大量输出里缩小范围。比如服务报错时,可以先找错误,再看上下文:
grep -n "ERROR" app.log
grep -C 5 "database" app.log如果日志持续增长,可以配合 tail:
tail -f app.log | grep --line-buffered "ERROR"| 需求 | 写法 | 说明 |
|---|---|---|
| 找固定字符串 | grep -F "a.b" file | 不把 . 当正则 |
| 多条件或关系 | `grep -E "ERROR | WARN" file` |
| 排除噪音 | grep -v "healthcheck" file | 反向过滤 |
| 只看文件名 | grep -rl "TODO" . | 适合代码检索 |
初学时不要急着写复杂正则。先用简单关键词找到范围,再逐步加 -n、-C、-E。
版权归属:Shuo Liu