首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zgrep对egrep和grep

zgrep对egrep和grep
EN

Unix & Linux用户
提问于 2017-10-04 10:26:16
回答 1查看 18.2K关注 0票数 4

是否有一条容易记住的经验法则来了解以下两种方法之间的区别:

  • egrep
  • zgrep
  • grep

知道在我的机器上安装了哪些?

(实际上,似乎有一些:“如果安装了GNU grep,那么.,否则.”)

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-10-04 10:38:38

zgrep通常是gzip附带的脚本(也请参阅Stephen下面的评论),greps被压缩成压缩文件(带有gzip识别的压缩格式)。z用于zip (不是用于pkzip压缩存档格式,而是用于压缩/压缩文件)。

egrep是70年代末在Unix V7中引入的一种命令,与旧的grep (本身是实现古ed文本编辑器g/re/p命令的独立命令)相比,具有新的regexp算法和语法。这是扩展regexps (BRE)的grep,而不是grep/sed/ed/vi.所理解的基本regexp(BRE)

\{\<这样的额外运算符后来被添加到grep的一些实现中,但没有添加egrep,使得grep在某些方面比egrep更加扩展。

90年代初,POSIX尝试将egrepgrep统一为一个命令( grep -E用于执行egrep所做的操作),并使{min,max}操作符等效于grep's REs中的\{min,max\} (因此与egrep不向后兼容)。它还指定了f__ixed字符串搜索的-F选项,以取代fgrep实用程序。

今天,egrep不是一个标准命令(fgrep也不是)。虽然大多数系统都有一个,但有些实现承认{min,max}操作符,有些则没有。

grepgrep -E是标准的。一些grep实现有额外的开关来识别更多不同的regexp语法,比如用于PCRE的grep -P (或perl-like,也请参阅PCRE库附带的pcregrep命令),用于增强的regexp的grep -X

grepgrep -E支持的运算符列表也因系统而异。为便于移植,请将其限制为POSIX指定的列表。

在Solaris上,确保使用/usr/xpg4/bin/grep/bin中的一个与POSIX不兼容。

各种压缩库/工具都提供了zgrepbzgrepxzgrep脚本,其中没有一个是标准的。

POSIX指定的唯一压缩程序是compress/uncompress,它用于80年代早期的一种古老的压缩格式,现在已经没有人使用了。

gzip (GNU zip)理解目前仍在使用的另一种古老的压缩格式,并且在大多数系统(无论是GNU实现还是克隆)上都可以找到gzip。所以你应该能够:

代码语言:javascript
复制
gzip -d < file.gz | grep BRE

或者:

代码语言:javascript
复制
gzip -d < file.gz | grep -E ERE

grep转换为gzip压缩文件。如果您能够访问相应的工具,则可以对任何其他压缩格式进行同样的操作。

票数 18
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/396024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档