簡體   English   中英

如何替換bash正則表達式中的擴展名?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM