2016-05-31 25 views
1

複数のgrepの結果を.txt形式で保存したい。私は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}を変更して、その後renameまたはmvを実行することなく.txtをキャンセルする方法はありますか?

注:*の部分の長さは可変です。

答えて

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

関連する問題