Linux 高级文本搜索神器 egrep 命令详解:扩展正则表达式实战指南 📅 2026/7/22 0:21:53 一、命令简介egrepExtended Global Regular Expression Print是一个在文件中查找指定字符串或模式的命令行工具。它是 grep 命令的扩展版本使用扩展正则表达式Extended Regular ExpressionERE语法进行模式匹配。核心特点支持更丰富的正则表达式元字符如 、?、|、() 等而无需转义。执行效果等同于 grep -E。通常用于匹配更复杂的文本模式。注意在现代 Linux 系统中egrep 已被视为已弃用deprecated官方推荐使用 grep -E 替代。但大多数系统仍保留此命令以保持向后兼容。二、语法格式bash运行egrep [选项] 查找模式 [文件名1] [文件名2] ...参数说明选项控制匹配行为的各种标志。查找模式要搜索的字符串或正则表达式。文件名要搜索的一个或多个文件。如果省略文件名或使用 -则从标准输入读取。三、常用选项及说明表格选项说明-i忽略大小写case-insensitive。-v反向匹配显示不包含模式的行。-n显示匹配行的行号。-c只显示匹配行的计数不显示具体内容。-l只显示包含匹配项的文件名不显示具体行。-L只显示不包含匹配项的文件名。-r 或 -R递归搜索子目录。-w匹配整个单词word-regexp。-x匹配整行line-regexp。-A 数字显示匹配行及其后指定行数的内容。-B 数字显示匹配行及其前指定行数的内容。-C 数字显示匹配行及其前后指定行数的内容。-e 模式指定多个模式之一。-f 文件从文件中读取模式列表。-q安静模式不输出任何内容用于条件判断。-s不显示错误信息静默模式。--color高亮显示匹配的文本。四、示例用法示例 1基本搜索在当前目录所有文件中搜索 error 字符串bash运行egrep error *示例 2忽略大小写搜索搜索 linux 或 Linux 或 LINUXbash运行egrep -i linux file.txt示例 3显示行号搜索并显示匹配行的行号bash运行egrep -n pattern file.txt示例 4递归搜索在当前目录及所有子目录中搜索bash运行egrep -r TODO .示例 5使用扩展正则表达式特性搜索 error 或 warningbash运行egrep error|warning logfile.txt搜索至少有一个数字的行bash运行egrep [0-9] file.txt示例 6过滤注释行和空白行过滤掉以 # 开头的注释行和空白行bash运行egrep -v ^\s*(#|$) config.conf示例 7上下文显示显示匹配行及其前后各 2 行bash运行egrep -C 2 critical server.log示例 8从多个文件中搜索在多个类型的文件中搜索bash运行egrep function *.js *.ts示例 9使用多个模式搜索多个可能的关键词bash运行egrep -e error -e fail -e timeout app.log示例 10统计匹配数量仅统计匹配行数bash运行egrep -c success results.txt五、注意事项兼容性说明egrep 在 POSIX 标准中已被标记为 “已弃用”。建议在新脚本中使用 grep -E 替代 egrep。两者功能完全相同egrep 只是 grep -E 的别名。正则表达式差异egrep 使用扩展正则表达式ERE。普通 grep 使用基本正则表达式BRE。ERE 中以下字符有特殊含义且无需转义?、、{、}、|、(、)。在 BRE 中这些字符需要转义才能表示特殊含义。特殊字符处理当模式中包含 shell 特殊字符时使用单引号包裹。需要变量替换时使用双引号。bash运行# 正确使用单引号避免 shell 解释特殊字符 egrep ^[A-Z] file.txt # 需要变量时使用双引号 patternerror egrep $pattern file.txt性能考虑对于大文件复杂的正则表达式可能影响性能。使用 -F固定字符串选项可提高简单字符串搜索的速度。返回值找到匹配项时返回 0。未找到匹配项时返回 1。发生错误时返回 2。