如何使用 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>進行微調)?

相關內容