命令简介

egrep 是 grep 命令的扩展版本,它支持使用扩展正则表达式进行文本搜索。与基本正则表达式相比,扩展正则表达式提供了更加丰富和强大的模式匹配功能,如字符集合、间接引用、反向引用等。egrep 命令在需要进行复杂文本搜索和匹配的场景下非常有用。

命令格式

egrep 命令的基本语法格式如下:

1
egrep [options] pattern [files]

其中:

  • options: 用于指定 egrep 命令的选项,例如 -i 忽略大小写。
  • pattern: 需要搜索的扩展正则表达式模式。
  • files: 需要搜索的一个或多个文件。如果不指定文件,egrep 将从标准输入读取数据。

参数说明

egrep 命令提供了多个可选参数,下表列出了常用的参数及其说明:

参数 说明 备注
-i 忽略大小写
-v 反向匹配,显示不包含模式的行 -
-n 显示匹配行的行号 -
-c 只显示匹配行的计数 -
-l 只显示包含匹配的文件名 -
-r 递归搜索子目录 -
-x 只显示完全匹配的行 -
-o 只显示匹配的部分 -

命令实例

基本用法

1.在文件中搜索指定扩展正则表达式模式

1
egrep 'pattern' file.txt  

2.忽略大小写搜索多个文件

1
egrep -i 'pattern' *.txt

3.从标准输入搜索模式

1
cat file.txt | egrep 'pattern'

扩展正则表达式搜索

1.搜索以数字开头的行

1
egrep '^[0-9]+' file.txt

2.搜索包含四位数字的行

1
egrep '[0-9]{4}' file.txt

3.搜索包含 ‘foo’ 或 ‘bar’ 的行

1
egrep '(foo|bar)' file.txt

过滤和统计

1.反向匹配,显示不包含模式的行

1
egrep -v 'pattern' file.txt

2.统计匹配行的数量

1
egrep -c 'pattern' file.txt

3.列出包含模式的文件名

1
egrep -l 'pattern' *.txt

递归搜索和高亮显示

1.递归搜索当前目录及子目录

1
egrep -r 'pattern' .

2.高亮显示匹配的模式

1
egrep --color 'pattern' file.txt

组合使用其他命令

1.搜索进程名称

1
ps aux | egrep '(process_name|other_name)'

2.在指定文件中搜索模式

1
find . -name '*.txt' -exec egrep 'pattern' {} \;

扩展用法

1.统计模式出现的次数

1
egrep -o 'pattern' file.txt | sort | uniq -C

2.显示匹配行及其后两行

1
egrep -A 2 'pattern' file.txt

3.显示匹配行及其前两行

1
egrep -B 2 'pattern' file.txt

通过上述实例,你可以看到 egrep 命令在使用扩展正则表达式进行文本搜索、过滤、统计以及与其他命令组合使用时的灵活应用。egrep 命令继承了 grep 命令的强大功能,并增加了扩展正则表达式的支持,使其在处理复杂文本搜索和匹配任务时更加出色。

此外,egrep 命令还有一些扩展用法,例如:

  1. 多模式搜索

    你可以使用 -e 选项指定多个扩展正则表达式模式进行搜索。例如:

    1
    egrep -e 'pattern1' -e 'pattern2' file.txt  # 搜索匹配任一模式的行
  2. 递归排除文件或目录

    在递归搜索时,你可以使用 --exclude--exclude-dir 选项排除指定的文件或目录。例如:

    1
    2
    egrep -r 'pattern' . --exclude=*.log  # 递归搜索但排除 .log 文件
    egrep -r 'pattern' . --exclude-dir=node_modules # 递归搜索但排除 node_modules 目录
  3. 显示上下文行

    与 grep 命令类似,你可以使用 -A-B-C 选项显示匹配行的上下文行。例如:

    1
    egrep -C 2 'pattern' file.txt  # 显示匹配行及其前后两行
  4. 使用颜色高亮

    egrep 命令也支持使用 --color 选项高亮显示匹配的模式,并且可以使用 GREP_COLORS 环境变量自定义高亮颜色。

总之,egrep 命令是一个强大的扩展正则表达式搜索工具,它不仅继承了 grep 命令的所有功能,还增加了扩展正则表达式的支持,使其在处理复杂文本搜索和匹配任务时更加出色。如果你需要进行高级文本搜索和匹配,egrep 命令绝对是一个不错的选择。