如何让 zpaq 将文件提取到 stdout

如何让 zpaq 将文件提取到 stdout

我有一些用 ZPAQ 压缩的日志文件,每次需要 grep 事件时,我都不想将它们提取到磁盘。我想将它们提取到 stdout,这样我就可以用 gzcat 以与 GZ 压缩文件相同的方式处理输出:

# gzcat logfile.gz | grep foobarEVENT

# zpaq l logfile.zpaq 
zpaq v6.42 journaling archiver, compiled Nov 20 2013
Reading archive logfile.zpaq

 Ver  Date      Time (UT) Attr           Size Ratio  File
----- ---------- -------- ------ ------------ ------ -------
>   1                              3873434570 0.0359 logfile
1 of 1 files shown. 3873434570 -> 139125985

Ver Last frag Date      Time (UT) Files Deleted   Original MB  Compressed MB
---- -------- ---------- -------- ------ ------ -------------- --------------
   1        1                          1      0    3873.434670     139.125985
0.529 seconds

答案1

我能够通过典型的 stdout 传递未压缩的 zpaq 文件的方式是创建一个 fifo 命名管道并在一个进程中解压缩到该 fifo,然后在另一个进程中从 fifo 读取。

例如:

$ mkfifo data_logfile
$ zpaq x logfile -force -to data_ &
$ grep searchTeXt data_logfile > grep_results.txt

相关内容