
В Debian вы можете использовать zgrep для grep через gunzip-архивный файл. Причина создания gunzip-файла достаточно проста, такие файлы, как changelogs, огромны и могут быть сильно сжаты. Проблема в том, что с 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-05-14, когда Intel выпустила программные исправления, затрагивающие эти и различные другие проблемы в тот день. Я пробовал использовать 'head' и 'tail' с помощью каналов, но ни один из них не оказался эффективным.
решение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>
для точной настройки)?