grep -E 即 egrep 匹配多个

本文详细介绍了grep命令的基本用法,包括如何使用不同的正则表达式进行文件搜索,以及如何通过特定选项来实现忽略大小写等高级功能。

原文摘自: http://blog.youkuaiyun.com/devwang_com/article/details/52469739

grep --help


用法: grep [选项]... PATTERN [FILE]...
在每个 FILE 或是标准输入中查找 PATTERN。
默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: grep -i 'hello world' menu.h main.c

-i, --ignore-case         忽略大小写


-E, --extended-regexp     PATTERN 是一个可扩展的正则表达式(缩写为 ERE)


‘egrep’即‘grep -E’。


匹配单个,不用双引号:

ls | grep  file


匹配多个,要加参数,使用双引号:


ls | grep -E "file1|file2"

ls | egrep "file1|file2"


<think>好的,我现在需要回答用户关于egrepgrep -E的区别的问题。用户已经提供了之前的对话内容和一些引用,我需要仔细分析这些信息,结合已有的知识,给出准确的回答。首先,用户的问题很明确,询问egrepgrep-E的差异。根据之前的回答,用户可能已经知道egrep是扩展正则表达式的版本,而grep-E可能与之相关。我需要确认两者的关系,是否有功能上的区别,或者仅仅是命令的不同形式。 查阅用户提供的引用,引用[2]提到grep家族包括egrep和fgrep,而引用[4]解释了grep-e选项用于指定多个模式。这可能意味着egrep实际上是grep-E的别名,但需要确认。在Linux系统中,egrep通常等同于grep -E,用来启用扩展正则表达式。而fgrep对应grep-F,用于固定字符串匹配,如引用[1]中的例子所示。接下来,我需要验证这一点。用户提供的引用[1]中的例子显示,使用grep -F时,会禁用正则表达式,将模式视为固定字符串。例如,grep -F ^abc匹配的是字面的^abc,而不是以abc开头的行。这说明-F选项的作用,而-E选项应该启用扩展正则表达式,与egrep相同。因此,egrepgrep -E在功能上是相同的,只是命令形式不同。egrep是历史上的命令,现在可能作为grep的符号链接存在,调用时自动加上-E选项。用户可能想知道是否存在其他差异,比如选项支持或行为上的不同,但根据知识,两者在功能上没有区别。另外,用户可能关心使用场景或兼容性问题。例如,在某些系统中,可能推荐使用grep-E而不是egrep,以确保一致性。需要指出这一点,但根据引用中的信息,没有提到其他差异,所以主要区别在于命令名称和调用方式。还需要注意,用户可能希望了解如何在实际中使用这两个命令,比如在脚本中选择哪个更好。这时可以建议使用grep -E,因为egrep可能在未来的版本中被弃用,或者某些环境可能不支持。总结,egrepgrep -E在功能上是等价的,都支持扩展正则表达式。区别在于命令名称,而grep -E是更符合POSIX标准的选项,推荐使用。需要将这一点清晰地向用户解释,并结合引用中的例子说明它们的行为一致。</think>### egrep与`grep -E`的区别详解 egrep和`grep -E`在功能上是完全等价的,二者均支持**扩展正则表达式**(Extended Regular Expression)的匹配模式。它们的核心区别在于**命令名称的历史演变**和**POSIX标准规范**的实现方式。 #### 一、本质等价性 1. **功能一致性** - `egrep`是早期Unix系统中独立的命令,专门用于扩展正则表达式匹配- `grep -E`是POSIX标准中定义的选项形式,通过`-E`选项启用扩展正则表达式功能。 - 在Linux系统中,`egrep`实际上是`grep -E`的别名(可通过`alias egrep='grep -E'`验证)[^2]。 2. **正则表达式语法支持** - 两者均支持以下扩展正则语法(无需转义符`\`): - `+`(匹配前导字符1次或多次) - `?`(匹配前导字符0次或1次) - `|`(逻辑或) - `()`(分组) - `{m,n}`(重复次数范围) #### 二、实际差异点 | 对比维度 | egrep | grep -E | |----------------|-------------------|--------------------| | **命令形式** | 独立命令 | `grep`的选项形式 | | **兼容性** | 旧系统可能保留 | POSIX标准强制支持 | | **脚本推荐度** | 不推荐(可能弃用)| 推荐(标准化写法) | #### 三、验证示例 通过匹配扩展正则表达式`go+gle`验证行为一致性: ```bash # 使用egrep egrep 'go+gle' file.txt # 使用grep -E grep -E 'go+gle' file.txt ``` 两者均能匹配`google`、`gogle`等字符串,输出结果完全相同[^2]。 #### 四、选择建议 - **优先使用`grep -E`**:符合POSIX标准,避免因系统差异导致命令不可用。 - **避免混合使用**:在脚本中统一使用一种形式,增强可读性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值