我正试图编写一个bash脚本来计算一些生物学的东西。我对正则表达式有疑问,bash对我来说还有些陌生。一直以来,我没有时间去学习它所需要的快速结果。 所以我的文件:
RV30.afa
resFilesRV30.fasta
RV30213.afa
resFilesRV30213.fasta
RV30441.afa
resFilesRV30441.fasta
...
我必须使用的命令:
mscore -cftit RV30.afa resFilesRV30.fasta >FinalRV30.txt'
我现在所拥有的:
#!/bin/bash
parallel 'mscore -cftit {} resFile{}.fasta >final{.}.txt' ::: RV*.afa
问题是: resFile {}。fasta =试图打开这样的文件:resFileXXX。 afa .fasta我需要跳过第二个参数(.afa)的扩展名,并通过“ .fasta”将其标出。
我没有在Google上找到解决我的问题的好建议(或者我还不能将其重新构建为脚本),并且我获得结果的时间已经结束。因此,我将很高兴为您解决这个问题提供帮助。在此基础上,我将能够解决其他脚本中出现的其他问题
答案 0 :(得分:2)
在第二个参数中用{}
代替{.}
,这应该对您有用:
parallel 'mscore -cftit {} resFiles{.}.fasta >final{.}.txt' ::: RV*.afa
在命令中已使用该命令时,替换字符串{.}
将删除扩展名。
答案 1 :(得分:1)
这行不通吗?
for afafile in *.afa; do number="${afafile#file}"; number="${number%.afa}"; ./mscore -cftit "$afafile" "resFile${number}.fasta" > "file${number}final.txt"; done