Linux-grep
grep
是 Linux 和 Unix 系统中一个强大的文本搜索工具,用于在文件中查找匹配指定模式的行。它支持正则表达式,可以快速定位和过滤文本内容。
基本语法
grep [选项] 模式 文件名
- 选项:控制
grep
的行为。 - 模式:要搜索的文本或正则表达式。
- 文件名:要搜索的文件。
常用选项
选项 | 描述 |
---|---|
-i |
忽略大小写。 |
-v |
反向匹配,显示不匹配的行。 |
-r |
递归搜索目录中的文件。 |
-n |
显示匹配行的行号。 |
-c |
统计匹配行的数量。 |
-l |
只显示包含匹配项的文件名。 |
-w |
匹配整个单词。 |
-A NUM |
显示匹配行及其后 NUM 行。 |
-B NUM |
显示匹配行及其前 NUM 行。 |
-C NUM |
显示匹配行及其前后各 NUM 行。 |
-E |
使用扩展正则表达式(等同于 egrep )。 |
示例
基本搜索
-
在文件中搜索包含
error
的行:grep "error" logfile.txt
-
忽略大小写搜索:
grep -i "error" logfile.txt
-
搜索整个单词:
grep -w "error" logfile.txt
显示行号
-
显示匹配行的行号:
grep -n "error" logfile.txt
统计匹配行数
-
统计匹配行的数量:
grep -c "error" logfile.txt
反向匹配
-
显示不包含
error
的行:grep -v "error" logfile.txt
递归搜索
-
递归搜索目录中所有文件:
grep -r "error" /var/log/
显示文件名
-
只显示包含
error
的文件名:grep -l "error" *.log
上下文显示
-
显示匹配行及其后 2 行:
grep -A 2 "error" logfile.txt
-
显示匹配行及其前 2 行:
grep -B 2 "error" logfile.txt
-
显示匹配行及其前后各 2 行:
grep -C 2 "error" logfile.txt
使用正则
-
使用正则表达式搜索:
grep "error.*critical" logfile.txt
-
使用扩展正则表达式:
grep -E "error|critical" logfile.txt
多模式搜索
-
搜索多个模式:
grep -e "error" -e "critical" logfile.txt
结合管道
-
结合
ps
命令搜索进程:ps aux | grep "nginx"
-
结合
find
命令搜索文件内容:find /var/log -name "*.log" | grep "error"