How can I grep for a text pattern in a zipped text file?
我们的每日Feed文件平均大小为2 GB。这些文件在每个月末归档为一个zip文件,并存储在网络共享中。有时,我需要在那些文件中搜索某些记录。为此,我将远程桌面连接到共享服务器,将文件解压缩到temp文件夹,运行grep(或PowerShell)搜索,然后删除temp文件夹。现在,由于我们的服务器磁盘空间不足,因此不再建议将它们全部解压缩到临时文件夹。在这些压缩文件上进行正则表达式搜索,对磁盘或网络资源的影响最小的有效方法是什么?
Linux上的
zgrep。如果您使用的是Windows,则可以下载GnuWin,其中包含Windows端口zgrep。
PowerShell社区扩展(PSCX)包括
1 2 3 | Read-Archive -Path foo.zip -Format Zip | ` Where-Object { $_.Name -like"*.txt" } | ` Expand-Archive -PassThru | select-string"myRegex" |
将使您无需提取整个档案即可进行搜索。
Powershell社区扩展(PSCX)中有一些与zip相关的Commandlet。我不认为他们会做您想做的(尽管我可能完全错了)。相反,我将使用.Net Zip库(DotNetZip),该库实际上允许您列出存档中文件的名称,然后仅提取所需文件。