#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» *