如何在bash中从扩展工具中调用该方法

问题描述 投票:0回答:1

我有一个比较对齐的工具。命令是

./mscore -cftit <inputFile> <inputFile2>

结果是控制台中有四行。我尝试做什么?

我有数百个文件:

file1.afa
resFile1.fasta
file2.afa
resFile2.fasta
file3.afa
resFile3.fasta
...

我需要在第一行“X.afa”文件和第二个同名但“X.fasta”文件中加入参数。结果应保存为Xfinal.txt文件或类似的东西。所以我应该有数百个* final.txt文件。 (之后我将在python中捕捉它,并计数)。

我怎么能用bash做到这一点?

我尝试过这样的事情:

#!/bin/bash
ls *.afa | parallel "mscore -cftit {} {}.fasta >{}final.txt"

但当然,它没有用。 Bash它对我来说并不熟悉,我需要快速获得一些生物学结果,我希望自动化我的工作。我会学习它,但现在我需要它快速。有人能帮我吗?

bash command
1个回答
1
投票

所以我想你想要一系列这样的命令:

mscore -cftit file1.afa resFile1.fasta > File1final.txt
mscore -cftit file2.afa resFile2.fasta > File2final.txt
mscore -cftit file3.afa resFile3.fasta > File3final.txt
...

试试这个:

ls *.afa | while read A; do B=`echo $A | sed 's/^file/resFile/;s/.afa$//'`; ./mscore -cftit $A $B.fasta > ${B}final.txt; done

更好的版本(感谢@tripleee):

for afafile in *.afa; do number="${afafile#file}"; number="${number%.afa}"; ./mscore -cftit "$afafile" "resFile${number}.fasta" > "file${number}final.txt"; done
© www.soinside.com 2019 - 2024. All rights reserved.