2011-08-08 174 views
9

我写了一个文件处理程序,现在需要从一个压缩文件读取(。广州解压文件可能会为2TB大),使用sed的一个压缩文件

是否有压缩一个sed相当于像(ZCAT/CAT)或其他文件,这将是做有效以下

ONE=`zcat filename.gz| sed -n $counts` 

$计数的最佳方法:计数器读(逐行)

上述方法的工作原理,但相当因为我需要读取每行并在特定字段上执行匹配,所以对于大文件来说速度慢。

感谢

编辑

虽然没有直接的帮助,这里有一组zcommands

http://www.cyberciti.biz/tips/decompress-and-expand-text-files.html

+1

无论如何,处理压缩文件将会很慢。 – Nobody

+3

我的意见是,unziping文件和通过管道阅读**是**暂时打开ziped文件并获得结果的最有效的方法。完成后,您不必花费时间重新整理文件。通过确保你的'sed'代码被完全优化,或者更可能使用awk,perl,python之一来进行计算,你更有可能提高整体操作的效率。祝你好运。 – shellter

+0

谢谢..如果未压缩,文件大小将跨越2TB ..因此它对我的基础设施不可行.. – learner

回答

3

那么你要么可以有更快的速度(即使用无压缩文件)或更多的自由空间(即使用压缩文件和显示的管道)...对不起。使用压缩文件将始终存在开销。

2

如果你理解压缩格式的内部结构,你可能会写一个模式匹配器,它可以对压缩数据进行操作,而不需要完全解压缩,而是通过简单地从压缩数据中确定模式是否存在在给定的一块解压缩数据中。

如果模式有任何复杂性,这听起来像一个相当复杂的项目,因为您必须处理通过两个(或多个)单独解压缩的输出组合来满足模式的情况。