Подтвердить что ты не робот

Как я могу использовать grep для текстового шаблона в текстовом файле с застежкой-молнией?

Наш ежедневный файл подачи в среднем составляет 2 ГБ. Эти файлы архивируются в один ZIP файл в конце каждого месяца и сохраняются в сетевом ресурсе. Время от времени мне нужно искать определенные записи в этих файлах. Я делаю это, подключая удаленный рабочий стол к общему серверу, распаковывая файлы в временную папку, запуская поиск grep (или PowerShell), а затем удаляю временную папку. Теперь, поскольку наш сервер работает на дисковой памяти, его больше не рекомендуется распаковывать в папку temp. Что такое эффективный способ поиска регулярных выражений на этих zip файлах с минимальным воздействием на диск или сетевые ресурсы?

4b9b3361

Ответ 1

zgrep в Linux. Если вы находитесь в Windows, вы можете загрузить GnuWin, который содержит порт Windows zgrep.

Ответ 2

Расширения сообщества PowerShell (PSCX) включают командлеты Read-Archive и Expand-Archive, но не (пока?) включают который сделает то, что вы хотите очень просто. Тем не менее, вы можете использовать Read-Archive и Expand-Archive. Что-то вроде этого непроверенного бит

Read-Archive -Path foo.zip -Format Zip | `
   Where-Object { $_.Name -like "*.txt" } | `
      Expand-Archive -PassThru | select-string "myRegex"

позволит вам искать без извлечения всего архива.

Ответ 3

В расширениях сообщества Powershell есть несколько команд, связанных с zip (PSCX). Я не думаю, что они будут делать то, что вы хотите, однако (я мог бы ошибаться в этом). Вместо этого я бы использовал .Net Zip Library (DotNetZip), который позволяет существенно перечислить имена файлов в архиве затем извлеките только те, которые вы хотите.