web-dev-qa-db-ja.com

zip形式のテキストファイルでテキストパターンをgrepするにはどうすればよいですか?

私たちの毎日のフィードファイルのサイズは平均2GBです。これらのファイルは、月末に1つのZipファイルにアーカイブされ、ネットワーク共有に保存されます。時々、それらのファイルで特定のレコードを検索する必要があります。これを行うには、リモートデスクトップで共有サーバーに接続し、ファイルを一時フォルダーに解凍し、grep(またはPowerShell)検索を実行してから、一時フォルダーを削除します。現在、サーバーのディスク容量が不足しているため、すべてを一時フォルダーに解凍することはお勧めしません。ディスクまたはネットワークリソースへの影響を最小限に抑えて、これらのzipファイルで正規表現検索を実行する効率的な方法は何ですか?

19
dawntrader

zgrep Linuxの場合。 Windowsを使用している場合は、ダウンロードできます GnuWin これにはzgrepのWindowsポートが含まれています。

25
Mark

PowerShell Community Extensions (PSCX)には、Read-ArchiveおよびExpand-Archiveコマンドレットが含まれていますが、(まだ?)必要なものを非常に単純にするナビゲーションプロバイダーは含まれていません。そうは言っても、Read-ArchiveExpand-Archiveを使用できます。このテストされていないビットのようなもの

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

アーカイブ全体を抽出せずに検索できます。

4
Scott Weinstein

Powershell Community Extensions (PSCX) にはZip関連のコマンドレットがいくつかあります。しかし、彼らがあなたが望むことをするだろうとは思いません(私はそれについて完全に間違っているかもしれませんが)。代わりに、.Net Zip Library (DotNetZip) を使用します。これにより、基本的にアーカイブ内のファイルの名前を一覧表示し、必要なファイルだけを抽出できます。

2
EBGreen