一、grep命令简介
grep
是一种强大的文本搜索工具,能够使用特定的模式匹配(包括正则表达式)去搜索文本。
Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。
二、grep实操
2.1 基本搜索
// 在filename文件中根据关键词 pattern1 查找(默认只返回关键词所在的那一行)
grep 'pattern1' filename
2.2 多关键词搜索
// 在filename文件中根据关键词 pattern1 或 pattern2 查找
grep 'pattern1\|pattern2' filename
- 说明:
- 要用引号将待查找关键词括起来;
- 若搜索的关键词包含空格,则需要用双引号将其括起来;
|
代表或
,是元字符,要保留元字符的特殊含义,必须用反斜杠( \ )对它们进行转义 ;也可在grep 后跟-E
达到同样效果;
grep -E 'pattern1|pattern2' filename
实例
搜索某日志文件中出现的所有 fatal、error 和 critical 字符串
grep 'fatal\|error\|critical' /var/log/nginx/error.log
// <==>
grep -E 'fatal|error|critical' /var/log/nginx/error.log
默认情况下,grep命令时区分大小写的。若需忽略大小写,可加 -i
选项(等价--ignore-case
)。
示例:
grep -i 'fatal\|error\|critical' /var/log/nginx/error.log
与操作
// 显示既匹配 pattern1 又匹配 pattern2 的行
grep pattern1 files | grep pattern2
或操作
// 显示匹配 pattern1 或匹配 pattern2 的行
grep 'pattern1\|pattern2' files
整词匹配
// 只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
grep -w 'pattern' filename
排除特定关键字
grep -v 'pattern' filename
扩展
- -A 是显示匹配后和它后面的n行。
- -B 是显示匹配行和它前面的n行。
- -C 是匹配行和它前后各n行。
示例:
// 搜索含 pattern 关键词的前后3行记录
grep -C 3 'pattern' filename