[英]How to replace extension in bash regex?
我正在尝试编写一个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上找到一条关于我的问题的好建议(或者我还不能将它重新编写到我的脚本中),而且我获得结果的时间已经结束了。 所以我将非常感谢帮助解决这个问题。 在此基础上,我将能够解决其他脚本中出现的其他一些问题
这应该替换为你工作{}
与{.}
在第二个参数:
parallel 'mscore -cftit {} resFiles{.}.fasta >final{.}.txt' ::: RV*.afa
正如您在命令中使用的那样,替换字符串{.}
将删除扩展名。
这不起作用吗?
for afafile in *.afa; do number="${afafile#file}"; number="${number%.afa}"; ./mscore -cftit "$afafile" "resFile${number}.fasta" > "file${number}final.txt"; done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.