如何将文件的输出重定向到 STDOUT?

如何将文件的输出重定向到 STDOUT?

与这里类似的问题 如何将文件的输出重定向到标准输出? 然而,那里给出的解决方案并不通用。

我的问题:我有一个命令可以将输出生成到 STDOUT。同时,我可以通过参数指定来生成另一个直接进入文件的输出。

tcsh$ hmmscan --domtblout FILEOUTPUT Pfam-A.hmm query.fasta

Pfam-A.hmm是数据库文件(输入); query.fasta 也是一个输入文件

如何将 FILEOUTPUT 重定向到 STDOUT ?

背景:我计划对数千个输入使用该命令,并且需要分别为每个输入运行它。该命令在 Python 脚本中调用,我想使用 subprocess 模块将其 FILEOUTPUT 直接读取到内存/变量中。我知道如何使用 subprocess 模块获取 STDOUT;所以如果我可以将 FILEOUTPUT 重定向到 STDOUT...

我已经尝试过这样的东西(最终出现错误或创建的文件):

tcsh$ hmmscan --domtblout >/dev/tty Pfam-A.hmm query.fasta
tcsh$ hmmscan --domtblout >(mypipe) Pfam-A.hmm query.fasta
tcsh$ hmmscan --domtblout >$ Pfam-A.hmm query.fasta
tcsh$ hmmscan --domtblout >($1) Pfam-A.hmm query.fasta
tcsh$ hmmscan --domtblout >cat Pfam-A.hmm query.fasta
tcsh$ hmmscan --domtblout test.tab Pfam-A.hmm query.fasta >/dev/tty

答案1

要使 hmmscan 程序写入 stdout 而不是常规文件,请指定/dev/stdout而不是常规文件名。例如

$ hmmscan --domtblout /dev/stdout Pfam-A.hmm query.fasta

相关内容