Linux 如何使GNU并行使用记录分隔符从多个文件获取输入
我有一个可以通过以下方式执行的代码:Linux 如何使GNU并行使用记录分隔符从多个文件获取输入,linux,multithreading,unix,parallel-processing,gnu,Linux,Multithreading,Unix,Parallel Processing,Gnu,我有一个可以通过以下方式执行的代码: $ ./mycode [param1] [param2] [input1-fasta] [input2-fasta] [output-file] 例如,要执行它: $ ./mycode 4 4 input.fasta input2.fasta output.txt 通常,代码会对所有序列进行比较 Fasta文件如下所示: >Seq_1 TTTGTTTGCTTCATATTGTAATTAATTTTAAAGAAA >Seq_2 CTGTGACA
$ ./mycode [param1] [param2] [input1-fasta] [input2-fasta] [output-file]
例如,要执行它:
$ ./mycode 4 4 input.fasta input2.fasta output.txt
通常,代码会对所有序列进行比较
Fasta文件如下所示:
>Seq_1
TTTGTTTGCTTCATATTGTAATTAATTTTAAAGAAA
>Seq_2
CTGTGACAAATTGCCCTTAACCCTGTGACAAATTGC
请注意,两个输入的序列数可能不同
我想做的是使用多核运行该代码命令,并使用。
希望它能跑得更快
所以我尝试了这个命令:
$ parallel --pipe --recstart '>' "./mycode 4 4 input.fasta input2.fasta output.txt"
但它没有执行,而是给了我这个:
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
正确的方法是什么?不太清楚您期望这样做会产生什么效果:
parallel --pipe --recstart '>' "./mycode 4 4 input.fasta input2.fasta output.txt"
如果你想要全部对全部,我建议你把大文件分成块,然后用小文件测试每个块。比如:
cat big.fasta | parallel --pipe --recstart '>' "./mycode 4 4 small.fasta - output{#}.txt"
要使用--pipe,您的程序必须能够从标准输入(stdin)读取数据,因此“-”。如果无法尝试bash的重定向魔法:
cat big.fasta | parallel --pipe --recstart '>' "./mycode 4 4 small.fasta <(cat -) output{#}.txt"
cat big.fasta | parallel--pipe--recstart'>'”/mycode 4 4 small.fasta