【问题标题】:Piping output from two tar processes into a single child将两个 tar 进程的输出通过管道传输到单个子进程中
【发布时间】:2011-05-20 23:12:34
【问题描述】:

我可以像这样将两个命令传递给一个孩子(编辑:实际上你不能这样做,请参阅 sarnold 答案):

(echo "1.1 2.2 3.3") && (echo "4.4 5.5 6.6") | cat

哪个输出

1.1 2.2 3.3
4.4 5.5 6.6

我想对 tar 的输出做类似的事情。目前我正在分析存储在单个 tar 文件中的数据,如下所示:

tar -x --to-command MySerialiser -f MyData1.tar.xz | MyAnalyser

MySerialiser 将数据预处理为可供MyAnalyser 读取的表格。

我现在想将两个 tar 文件的输出通过管道传输到 MyAnalyser

我尝试了以下但输出到达终端。

(tar -x --to-command MySerialiser -f MyData1.tar.xz) && (tar -x --to-command MySerialiser -f MyData2.tar.xz)  | MyAnalyser

我可以用 shell 做到这一点吗?还是我需要重新打包我的 tar 文件?

【问题讨论】:

    标签: linux shell tar piping


    【解决方案1】:

    你做错了(即使是第一个 sn-p)。

    { tar -x --to-command MySerialiser -f MyData1.tar.xz && tar -x --to-command MySerialiser -f MyData2.tar.xz ; }  | MyAnalyser
    

    【讨论】:

      【解决方案2】:

      我不认为您的echo 示例显示了您认为它显示的内容;尝试用>/dev/null替换|cat

      $ (echo "1.1 2.2 3.3") && (echo "4.4 5.5 6.6") > /dev/null
      1.1 2.2 3.3
      

      第一个echo 的输出直接到终端(尚未重定向),第二个echo 的输出正在通过管道(在第一个@987654327 成功执行后) @ 命令)。

      我认为这种构造永远不会导致您想要的结果——那么您的目标是什么?将两个tar 命令的输出同时处理到一个程序中?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-03
        • 1970-01-01
        • 1970-01-01
        • 2011-06-18
        相关资源
        最近更新 更多