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

时间:2009-08-08 20:24:53

标签: powershell grep

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

3 个答案:

答案 0 :(得分:25)

Linux上的

zgrep。如果您使用的是Windows,则可以下载包含Windows端口zgrep的GnuWin

答案 1 :(得分:3)

PowerShell Community Extensions(PSCX)包括Read-ArchiveExpand-Archive cmdlet,但是(还没有?)包含一个导航提供程序,可以使您想要的非常简单。也就是说,你可以使用 Read-ArchiveExpand-Archive。像这个未经测试的位

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

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

答案 2 :(得分:2)

Powershell社区扩展(PSCX)中有一些与zip相关的命令行开关。我不认为他们会做你想做的事情(虽然我可能完全错了)。相反,我会使用.Net Zip Library (DotNetZip),它允许您基本上列出存档中文件的名称,然后只提取您想要的文件。