Linux grep 命令详解及示例大全
文章目录
- 一、基本语法
- 二、常用选项及示例
- 1. 基本匹配:查找包含某字符串的行
- 2. 忽略大小写匹配 -i
- 3. 显示行号 -n
- 4. 递归查找目录下的文件 -r 或 -R
- 5. 仅显示匹配的字符串 -o
- 6. 使用正则表达式 -E(扩展)或 egrep
- 7. 显示匹配前后行 -A, -B, -C
- 8. 统计匹配的行数 -c
- 9. 仅显示文件名 -l(小写 L)
- 10. 仅显示不匹配的行 -v
- 11. 匹配整词 -w
- 12. 匹配整行 -x
- 13. 查找多个关键字 -e
- 14. 在输出中高亮匹配内容 --color
- 15. 查找二进制文件中的字符串 -a
- 三、实用技巧合集
- 1. 查找所有包含 IPv4 地址的行
- 2. 排除某些文件类型
- 3. 将结果输出到新文件
- 四、总结
grep(Global Regular Expression Print)是 Linux/Unix 中非常强大的文本搜索工具,用于查找符合条件的字符串。它支持正则表达式、递归搜索、高亮显示等功能,是开发、运维人员的常用工具之一。
本文将全面介绍 grep 命令的常用选项,并结合示例帮助你掌握其使用技巧。
一、基本语法
grep [选项] '模式' 文件
二、常用选项及示例
1. 基本匹配:查找包含某字符串的行
grep "main" hello.c
说明:查找 hello.c 文件中所有包含 main 的行。
2. 忽略大小写匹配 -i
grep -i "hello" example.txt
说明:无论大小写,匹配 hello、Hello、HELLO 等。
3. 显示行号 -n
grep -n "return" hello.c
说明:显示每一行匹配内容所在的行号,便于定位。
4. 递归查找目录下的文件 -r 或 -R
grep -r "TODO" ./src/
说明:递归搜索 ./src/ 目录下所有文件中包含 TODO 的行。
5. 仅显示匹配的字符串 -o
grep -o "[0-9]\{3\}-[0-9]\{4\}" phones.txt
说明:只输出匹配的电话号码格式(如 123-4567),不显示整行。
6. 使用正则表达式 -E(扩展)或 egrep
grep -E "jpg|png|gif" files.txt
或者
egrep "jpg|png|gif" files.txt
说明:查找包含 jpg、png 或 gif 的行。
7. 显示匹配前后行 -A, -B, -C
grep -A 2 "error" log.txt
说明:显示匹配到 error 的行及其后面两行。
grep -B 2 "error" log.txt
说明:显示匹配行及其前两行。
grep -C 2 "error" log.txt
说明:显示匹配行以及前后各两行。
8. 统计匹配的行数 -c
grep -c "include" hello.c
说明:统计包含 include 的行数。
9. 仅显示文件名 -l(小写 L)
grep -l "main" *.c
说明:列出所有包含 main 的 .c 文件名。
10. 仅显示不匹配的行 -v
grep -v "^#" config.txt
说明:显示不以 # 开头的行(忽略注释)。
11. 匹配整词 -w
grep -w "int" hello.c
说明:只匹配单独出现的 int,不会匹配 print 或 integer。
12. 匹配整行 -x
grep -x "int main()" hello.c
说明:仅当整行完全匹配 int main() 时才显示。
13. 查找多个关键字 -e
grep -e "error" -e "fail" log.txt
说明:匹配包含 error 或 fail 的行。
14. 在输出中高亮匹配内容 --color
grep --color "main" hello.c
说明:将 main 高亮显示,方便快速识别。
15. 查找二进制文件中的字符串 -a
grep -a "PNG" image.png
说明:将二进制文件当作文本处理,可用于检查文件头等。
三、实用技巧合集
1. 查找所有包含 IPv4 地址的行
grep -Eo "[0-9]{1,3}(\.[0-9]{1,3}){3}" access.log
2. 排除某些文件类型
grep -r --exclude="*.o" "malloc" .
3. 将结果输出到新文件
grep "define" config.h > defines.txt
四、总结
选项 含义
-i 忽略大小写
-n 显示行号
-v 反向匹配
-c 统计匹配行数
-l 只显示文件名
-r 递归查找目录
-o 仅输出匹配部分
-A/-B/-C 显示匹配前后行
–color 高亮显示
-E / egrep 扩展正则
掌握 grep,你就拥有了一把在文本中快速定位问题的“放大镜”。无论是日志分析、源码检索,还是数据提取,grep 都能大大提高你的效率。