как искать конкретную строку из файла .gz?

#linux #grep #gzip

#linux #grep #gzip

Вопрос:

Я хочу выполнить поиск определенной строки из файла .gz, содержащего текстовый файл, без извлечения в терминале Linux. Я знаю, как выполнить поиск строки из текстового файла с помощью grep "text to search" ./myfile.txt . Но как заставить ее работать с файлами .gz?

Ответ №1:

Вы можете использовать zgrep . Использование аналогично grep .

 zgrep "pattern" file.gz
  

Из описания man страницы:

Zgrep вызывает grep для сжатых или архивированных файлов. Все указанные параметры передаются непосредственно в grep. Если файл не указан, то стандартный ввод при необходимости распаковывается и передается в grep. В противном случае данные файлы при необходимости распаковываются и передаются в grep.

Комментарии:

1. вы можете использовать подстановочный знак для всех файлов gz в папке zgrep "pattern" *.gz

2. zgrep не поддерживает рекурсивный поиск. Если вам нужно выполнить рекурсивный поиск, используйте find . -name "*.gz" -exec zgrep "pattern" {} ; и обязательно используйте экранирующие символы, которые могут образовывать регулярные выражения в вашем шаблоне.

Ответ №2:

 gunzip -c mygzfile.gz | grep "string to be searched"
  

Но это сработает только в том случае, если файл .gz содержит текстовый файл, что верно в вашем случае.

Ответ №3:

На него уже был дан ответ, но это может быть действительно полезно, если вы хотите выполнить поиск в нескольких файлах .gz.

Для поиска во всех файлах .gz в определенной папке вы можете использовать

zgrep «yourString» *