与这里类似的问题 如何将文件的输出重定向到标准输出? 然而,那里给出的解决方案并不通用。
我的问题:我有一个命令可以将输出生成到 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