[英]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.