如何使用 zgrep 找出行号或提供一些上下文信息。围绕 .gz 文件

如何使用 zgrep 找出行号或提供一些上下文信息。围绕 .gz 文件

在 Debian 中,您可以使用 zgrep 来 grep 压缩的存档文件。制作gunzip 文件的原因很简单,诸如变更日志之类的文件很大,可以高度压缩。问题是使用 zgrep 你只能得到特定的行,而没有上面或下面的信息。提供上下文信息。关于改变本身。举个例子来说明——

usr/share/doc/intel-microcode$ zgrep Fallout changelog.gz
  * Implements MDS mitigation (RIDL, Fallout, Zombieload), INTEL-SA-00223
  * Implements MDS mitigation (RIDL, Fallout, Zombieload), INTEL-SA-00223

现在可以看出,我的芯片似乎受到了 RIDL、Fallout 和 Zombieload 错误的影响,这些错误似乎已通过提到的软件补丁 INTEL-SA-00223 修复,但可以看出它相当不完整。

出路是使用 zless 然后 /RIDL 或任何其他关键字,然后您知道但我想知道是否还有其他方法或者这是唯一的解决方法? FWIW 确实了解到这些错误已于 2019 年 5 月 14 日得到缓解,英特尔在该日期发布了影响这些问题和各种其他问题的软件补丁。我确实尝试使用管道来使用“头”和“尾”,但它们都没有被证明是有效的。

答案1

祖蒂尔斯打包在 Debian 中)提供了一个功能更强大的版本zgrep,支持所有常用的上下文参数:

$ zgrep -C3 Fallout /usr/share/doc/intel-microcode/changelog.Debian.gz

  * New upstream microcode datafile 20190618
    + SECURITY UPDATE
      Implements MDS mitigation (RIDL, Fallout, Zombieload), INTEL-SA-00223
      CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091
      for Sandybridge server and Core-X processors
    + Updated Microcodes:
--

  * New upstream microcode datafile 20190514
    + SECURITY UPDATE
      Implements MDS mitigation (RIDL, Fallout, Zombieload), INTEL-SA-00223
      CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091
    + New Microcodes:
      sig 0x00030678, pf_mask 0x02, 2019-04-22, rev 0x0838, size 52224

您可以使用 来安装它sudo apt install zutils

答案2

您可以使用zcat普通的grep

zcat changelog.gz | grep -C3 "Fallout"

-C3告诉grep我们提供 3 行上下文(上面 3 行,下面 3 行)。如果您想要更少的上下文,请减少此值。

您可以通过使用-B<number>and/or来进一步定制它-A<number>(分别用于“之前”和“之后”。)

答案3

这也只是一种解决方法,但你尝试过吗

gzip -cd changelog.gz | grep -C <num_lines> "Fallout"

显示num_lines比赛前后的上下文(使用-A <num_after>-B <num_before>进行微调)?

相关内容