如何在压缩文本文件中grep文本模式?

daw*_*der 20 powershell grep

我们的每日Feed文件平均大小为2 GB.这些文件在每个月末归档到单个zip文件并存储在网络共享中.我不时需要在这些文件中搜索某些记录.我这样做是通过远程桌面连接到共享服务器,将文件解压缩到临时文件夹,运行grep(或PowerShell)搜索,然后删除临时文件夹.现在,因为我们的服务器磁盘空间不足,所以不再建议将它们全部解压缩到临时文件夹.对这些压缩文件进行正则表达式搜索的有效方法是什么,对磁盘或网络资源的影响最小?

Mar*_*ark 25

Linux上的zgrep.如果您使用的是Windows,你可以下载GnuWin包含zgrep的一个Windows端口.

  • @Nate 不完全正确。它将使用 gzip,这可能会对“常规”zip 文件产生问题,导致它仅解压缩存档中的第一个压缩文件。 (2认同)
  • 虽然 zgrep 很棒,但这个答案是不正确的:zgrep 搜索 gz 文件,而不是 zip 文件。他们不一样。 (2认同)

Sco*_*ein 5

PowerShell的社区扩展(PSCX)包括Read-ArchiveExpand-Archivecmdlet的,但不(没?)包括一个导航提供这将让你想很简单的东西。也就是说,您可以使用 Read-Archiveand Expand-Archive。像这个未经测试的东西

Read-Archive -Path foo.zip -Format Zip | `
   Where-Object { $_.Name -like "*.txt" } | `
      Expand-Archive -PassThru | select-string "myRegex"
Run Code Online (Sandbox Code Playgroud)

可以让您在不提取整个档案的情况下进行搜索。