我想运行一个需要多个参数的命令行脚本。具体做法是:
perl prinseq-lite.pl -fastq file1.fq.gz -fastq2 file2.fq.gz
\ -out_good goodfile.out -out_bad badfile.out -log prin.log
\ -ns_max_n 5 ... more_params ...
问题是文件是压缩的,必须先进行解压缩和存储才能处理,因为解压缩的文件大小非常大,此命令将在大量文件上运行。
所以我需要做的是动态解压缩输入。以前,用户l0b0建议多个输入流可能是一个解决方案。我尝试了以下内容,但似乎是在这里传递一个空输入流,因为程序声称输入文件是空的。
perl prinseq-lite.pl -fastq<(zcat f1.gz)-fastq2<(zcat f2.gz)...
perl prinseq-lite.pl -fastq 1< <(zcat f1.gz)-fastq2 2< <(zcat f2.gz)...
所以我需要做的就是为这个程序提供多个参数的解压缩输入。
有人可以告诉我这样做的正确方法,和/或我目前的尝试做错了吗?提前感谢您的意见。
答案 0 :(得分:0)
嗯,我认为最简单的方法是为gzunip
的输出创建命名管道,然后在命令中使用这些名称管道:
mkfifo file1.fq file2.fq file3.fq ...
gunzip -c file1.fq.gz > file1.fq &
gunzip -c file2.fq.gz > file2.fq &
gunzip -c file3.fq.gz > file3.fq &
然后使用这些管道作为文件名调用您的程序:
perl prinseq-lite.pl -fastq file1.fq -fastq2 file2.fq -fastq3 file3.fq ...