2016-05-31 172 views
1

我想要以.txt格式保存多個grep的結果。我做Bash - 通過更改文件名變量來更改文件名

for i in GO_*.txt; do 
    grep -o "GO:\w*" ${i} | grep -f - ../PFAM2GO.txt > ${i}_PFAM+GO.txt 
done 

的事情是,很顯然,最終的文件名領悟原來的文件擴展名也被GO_*.txt_PFAM+GO.txt。現在,我只想要GO_*_PFAM+GO.txt。有沒有辦法修改${i}以取消.txt而不必執行renamemv之後?

注意:*部分具有可變長度。

回答

2

您可以使用parameter expansion從文件名中刪除擴展:

for i in GO_*.txt; do 
    name="${i%.txt}" 
    grep -o "GO:\w*" "${i}" | grep -f - ../PFAM2GO.txt > "${name}_PFAM+GO.txt" 
done 
+0

謝謝,這並獲得成功!您分享的鏈接也非常有用。 – LinuxBlanket

+0

不客氣 – hek2mgl