是否有一条容易记住的经验法则来了解以下两种方法之间的区别:
egrepzgrepgrep知道在我的机器上安装了哪些?
(实际上,似乎有一些:“如果安装了GNU grep,那么.,否则.”)
发布于 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尝试将egrep和grep统一为一个命令( grep -E用于执行egrep所做的操作),并使{min,max}操作符等效于grep's REs中的\{min,max\} (因此与egrep不向后兼容)。它还指定了f__ixed字符串搜索的-F选项,以取代fgrep实用程序。
今天,egrep不是一个标准命令(fgrep也不是)。虽然大多数系统都有一个,但有些实现承认{min,max}操作符,有些则没有。
grep和grep -E是标准的。一些grep实现有额外的开关来识别更多不同的regexp语法,比如用于PCRE的grep -P (或perl-like,也请参阅PCRE库附带的pcregrep命令),用于增强的regexp的grep -X。
grep和grep -E支持的运算符列表也因系统而异。为便于移植,请将其限制为POSIX指定的列表。
在Solaris上,确保使用/usr/xpg4/bin/grep。/bin中的一个与POSIX不兼容。
各种压缩库/工具都提供了zgrep、bzgrep、xzgrep脚本,其中没有一个是标准的。
POSIX指定的唯一压缩程序是compress/uncompress,它用于80年代早期的一种古老的压缩格式,现在已经没有人使用了。
gzip (GNU zip)理解目前仍在使用的另一种古老的压缩格式,并且在大多数系统(无论是GNU实现还是克隆)上都可以找到gzip。所以你应该能够:
gzip -d < file.gz | grep BRE或者:
gzip -d < file.gz | grep -E ERE将grep转换为gzip压缩文件。如果您能够访问相应的工具,则可以对任何其他压缩格式进行同样的操作。
https://unix.stackexchange.com/questions/396024
复制相似问题