Bash cspilt后压缩焦油的管道输出

Bash cspilt后压缩焦油的管道输出,bash,command-line,gzip,tar,csplit,Bash,Command Line,Gzip,Tar,Csplit,因此,我有以下情况: 生成一组大的(必须压缩)输出的代码,如下所示: line00 line01 ... line0N . line10 line11 ... line1M . ... 我生成此内容并使用以下内容进行压缩: ./my_cmd | gzip -9 > output.gz 我想做的是,在伪代码中: ./my_cmd \ | csplit --prefix=foo '/^\.$/+1' {*} \ # <-- this will just create files

因此,我有以下情况:

生成一组大的(必须压缩)输出的代码,如下所示:

line00
line01
...
line0N
.
line10
line11
...
line1M
.
...
我生成此内容并使用以下内容进行压缩:

./my_cmd | gzip -9 > output.gz

我想做的是,在伪代码中:

./my_cmd \
| csplit --prefix=foo '/^\.$/+1' {*} \  # <-- this will just create files
| tar -zf ??? \                 # <-- don't know how to link files to tar
| gzip -9 > output.tar.gz
/my\u cmd\

|csplit--prefix=foo'/^\.$/+1'{*}\\Tar可以处理压缩本身

./my_cmd | csplit --prefix=foo - '/^\.$/+1' {*} ; # writes foo?? files 

printf "%s\n" foo[0-9][0-9] | tar czf output.tar.gz -T -
rm -f foo[0-9][0-9]  # clean up the temps     
如果这还不够好,而且你真的需要
-9
压缩

printf "%s\n" foo[0-9][0-9] | 
    tar cOT -               |
    gzip -9 > output.tar.gz
然后,您应该能够从存档中提取单个文件,以便单独处理

tar xvOf tst.tgz foo00 | wc -l

这使您可以保持文件压缩,但不必将块写入磁盘,就可以取出块进行处理。

我可能真的不需要它。哈,但是csplit没有吐出文件名。我猜是的。很容易一步一步地完成。不过,为什么要先把文件拆开,然后再把它放回有拉链的柏油球里呢?只压缩整个文件不是更有效吗?或者你想一次拿出一块来加工吗?没错,没错:一次一块。我主要是希望在不敲击硬盘的情况下把它分开。但是我编辑了;一旦它将它们写入存档,您就可以删除所有子文件。或者,您可以手动拉出文件块并对其进行压缩……这样至少可以将数据压缩到磁盘上。YMMV。