首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU和BSD zgrep产量的差异

GNU和BSD zgrep产量的差异
EN

Unix & Linux用户
提问于 2019-07-14 15:55:08
回答 1查看 186关注 0票数 4

我正在使用zgrep搜索一个模式,并在多个.gz文件的匹配行之后打印N行。

在BSD中,我在每个文件之后看到一个分隔符--

代码语言:javascript
复制
zgrep (BSD grep) 2.5.1-FreeBSD
$ zgrep  "match string" -A 1 FileName1.log.gz FileName2.log.gz
FileName1.log.gz:match string
FileName1.log.gz-
--
FileName2.log.gz:match string
FileName2.log.gz-

但在GNU中,我看到的不一样:

代码语言:javascript
复制
zgrep (gzip) 1.6
Copyright (C) 2010-2013 Free Software Foundation, Inc.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License .
There is NO WARRANTY, to the extent permitted by law.

Written by Jean-loup Gailly.

# zgrep  "match string" -A 1 FileName1.log.gz FileName2.log.gz
FileName1.log.gz:match string
FileName1.log.gz:
FileName2.log.gz:match string
FileName2.log.gz:

我试过--组分隔符,但它似乎在单个文件中分隔匹配。

如何在GNU zgrep中获得类似的结果?

EN

回答 1

Unix & Linux用户

发布于 2019-07-27 08:28:25

用GNU zgrep (或OpenBSD zgrep )无法获得类似的输出,这似乎是zgrep on FreeBSD和macOS特有的)。除非您自己对结果进行后处理,这很容易:

代码语言:javascript
复制
$ zgrep hello file*.gz | awk -F : 'NR > 1 && $1 != name { print "--" } { name = $1; print }'
file1.gz:hello world
--
file2.gz:hello world
--
file3.gz:hello world
--
file4.gz:hello world
--
file5.gz:hello world

这会将zgrep的输出传递给一个简短的awk程序,每当行的文件名位(第一个:之前的位)发生变化时,该程序就会插入分隔符。

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

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

复制
相关文章

相似问题

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