【问题标题】:How to pipe two output files to bgzip them?如何将两个输出文件通过管道传输到 bgzip 中?
【发布时间】:2016-06-30 21:50:04
【问题描述】:

我正在运行一个生成两个输出文件的命令,这两个文件非常大,我想通过管道将输出进行 bgzip 压缩,而不是在输出写入后运行 bgzip。

这些是我当前的命令:

samtools sort -n --threads 16  -l 0 $file --reference $ref.fa | samtools fastq  - -1 $file_1.fastq -2 $file_2.fastq
bgzip $file_1.fastq
bgzip $file_2.fastq

是否可以在一个命令中完成所有这些操作?

谢谢!

【问题讨论】:

    标签: linux io pipe output gzip


    【解决方案1】:

    想通了!

    samtools sort -n --threads 16  -l 0 $file --reference $ref.fa | samtools fastq - -1 >(pigz -p 12 > $file_1.fastq.gz) -2 >(pigz -p 12 > $file_2.fastq.gz)
    

    【讨论】:

      【解决方案2】:

      那些“-1”和“-2”标志是什么意思?

      如果他们的意思是“将标准输出重定向到文件”和“将标准错误重定向到文件”,那么你可以这样:

      ( ( YOUR_COMMAND ) | bzip > $file_1.fastq.bz ) 2>1 | bzip > $file_2.fastq.bz

      其中 YOUR_COMMAND 与您正在执行的操作相同,只是没有 -1 和 -2。这里的想法是将 stdout 发送到一个管道,并将 stderr 发送到另一个。是的,有点摇摇晃晃。 (如果在您的管道中早先报告了错误,它将显示在文件 2 中。)

      如果这不是 -1 和 -2 的意思,那么……我不知道有什么技巧。

      【讨论】:

      • 谢谢,但我认为这行不通。该命令将一个文件作为输入,并根据内容将其分类为 2 个不同的文件,因此您必须指定 -1 和 -2。感谢您的尝试!
      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 2010-10-12
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多