如何将fasterq-dump的统计输出重定向至文本文件?
解决方法
首先明确:fasterq-dump的统计信息默认输出到标准错误(stderr),而非标准输出(stdout)。你之前的重定向操作大概率只处理了stdout,或是因为管道层级问题没捕获到fasterq-dump的stderr,才导致统计信息跑到终端、log.txt为空。
给你两种可行的处理方式:
方式1:单独捕获fasterq-dump的统计信息(推荐)
直接把fasterq-dump的stderr追加到log.txt,不影响后续管道的数据流:
fasterq-dump -Z 你的测序编号 2>> log.txt | awk '{ if (NR % 8 < 5) print > "/dev/fd/3" else print > "/dev/fd/4" }' 3> >(pigz > 1.fq.gz) 4> >(pigz > 2.fq.gz)
解释:
2>> log.txt:专门将fasterq-dump输出的统计信息(stderr)追加到log.txt- awk通过文件描述符3、4分流数据,分别传给pigz生成对应压缩文件,保证测序数据正常处理,不会和统计信息混流
方式2:捕获整个管道的所有错误信息
如果想把awk、pigz的错误也一并记录到log.txt,可以用子shell包裹整个命令,统一重定向stderr:
( fasterq-dump -Z 你的测序编号 | awk '{ if (NR % 8 < 5) print > "/dev/fd/3" else print > "/dev/fd/4" }' 3> >(pigz > 1.fq.gz) 4> >(pigz > 2.fq.gz) ) 2>> log.txt
验证方法
先单独执行测试命令,确认统计信息确实在stderr:
fasterq-dump -Z 你的测序编号 2> test.log
打开test.log如果能看到那三行统计信息,就说明上述方法完全适用。
内容的提问来源于stack exchange,提问作者gladshire
相关产品推荐
相关产品推荐

