![bzip2 通过管道解压、更改和压缩文本文件](https://linux22.com/image/100165/bzip2%20%E9%80%9A%E8%BF%87%E7%AE%A1%E9%81%93%E8%A7%A3%E5%8E%8B%E3%80%81%E6%9B%B4%E6%94%B9%E5%92%8C%E5%8E%8B%E7%BC%A9%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6.png)
我正在寻找一种方法来解压缩 bzip2 压缩文本文件、更改内容(添加新内容、排序等)并通过管道再次压缩它。
我已经找到了一种方法来做到这一点,但不幸的是我必须使用另一个文件作为重新压缩的输出,因为 bzip2 不允许在这种情况下使用相同的文件。
这是我的代码:
bzip2 -dc file.bz2 | sort | bzip2 -9 > file_2.bz2
如果我使用相同的文件,我会收到以下错误:
bzip2: Compressed file ends unexpectedly;
perhaps it is corrupted? *Possible* reason follows.
bzip2: Success
Input file = file.bz2, output file = (stdout)
It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.
You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.
有什么解决方案可以解决我的问题吗?
提前致谢!
答案1
有什么解决方案可以解决我的问题吗?
mv file_2.bz2 file.bz2
另外,您可以使用bunzip2
代替bzip2 -d
.选项-c
为bzip2
在您的用例中,
就地写回压缩数据是一件非常棘手的事情,因为压缩因子因文件而异。所以就不要去那里。
就您而言,sort
无论如何都会缓存整个文件。所以原则上应该很容易,但实际上并没有一个简单的方法来做到这一点。