Grep 文本检索

精选 Linux grep 命令行文本搜索与正则表达式过滤速查表,涵盖常用选项参数及正则表达式匹配技巧。

#🔍 入门指引

#📐 基本用法

搜索标准输出数据流

$ grep [options] search_string

在指定文件中搜索精确字符串:

$ grep [options] search_string path/to/file

输出 myfile.txt 文件中包含 "mellon" 字符串的所有行:

$ grep 'mellon' myfile.txt

文件名参数支持使用通配符匹配。

#💡 选项参数示例

选项参数 常用示例 功能说明
-i grep -i ^DA demo.txt 忽略字符大小写 (忽略大小写)
-w grep -w "of" demo.txt 全匹配精确单词 (Word match)
-A grep -A 3 'Exception' error.log 打印匹配行及其 N 行 (After)
-B grep -B 4 'Exception' error.log 打印匹配行及其 N 行 (Before)
-C grep -C 5 'Exception' error.log 打印匹配行及其前后 N 行 (Context)
-r grep -r 'qr.warpnav.com' /var/log/nginx/ 递归搜索子目录下的所有文件 (递归处理)
-v grep -v 'warning' /var/log/syslog 反向选择(仅打印不匹配该模式的行)
-e grep -e '^al' filename 使用基础正则表达式匹配
-E grep -E 'ja(s\|cks)on' filename 使用扩展正则表达式匹配
-c grep -c 'error' /var/log/syslog 仅统计匹配到的总行数 (Count)
-l grep -l 'robot' /var/log/* 仅输出匹配到内容的文件名 (Files with matches)
-o grep -o search_string filename 仅打印行中匹配到的具体字符串部分
-n grep -n "go" demo.txt 显示匹配行的行号 (Line number)

#🔣 Grep 正则表达式匹配

#🔗 参考链接

更复杂的正则表达式规则请参阅正则速查表全量文档。

#🌐 常用通配符

字符标记 匹配含义
. 匹配任意单个字符
? 匹配前面的字符出现 0 次或 1 次(可选)
* 匹配前面的字符出现 0 次或多次
+ 匹配前面的字符出现 1 次或多次

#🔢 数量限定符 (Quantifiers)

限定符 匹配含义
{n} 前面的项恰好重复 n 次
{n,} 前面的项重复至少 n 次
{,m} 前面的项最多重复 m 次
{n,m} 前面的项重复 n 到 m 次

#🔠 POSIX 字符组

字符组 含义说明
[:alpha:] 任何大小写英文字母
[:digit:] 任何数字 (0-9)
[:alnum:] 任何大小写英文字母或数字
[:space:] 任何空白字符(空格、制表符等)

#🔤 字符集

表达式 含义说明
[A-Za-z] 任意大小写英文字母
[0-9] 任意数字
[0-9A-Za-z] 任意大小写英文字母或数字

#📍 位置锚定符 (Position)

锚定符 含义说明
^ 匹配行首
$ 匹配行尾
^$ 匹配空行
\< 匹配词首
\> 匹配词尾