2017-09-01 66 views
0

我有一個bash腳本,提取環形文件的名稱,並在名稱一些修改擊:編輯使用正則表達式

#this is the example if initial file: rmsf_visu_AT1_dry_apo.2rep.step7_1.pdb 
#this is expected name after post-processing: AT1_dry_apo.2rep 
# this is script which do it: 
for pdb in ${output}/*.pdb ; do 
name=$(basename "$pdb") 
name="${name/.step*_*/}" 
name="${name/.pdb/}" 
name="${name/_visu/}" 
name="${name/rmsf_/}" 
echo "I am sending ${name} to Chimera!" 

一個問題變種名稱: 1 - 如何合併所有的以下修改對於其由在文件名中的在像DD-MM-YYYY一個數字格式的任何地方一些日期的文件,如何使用,以除去日期 - 與一個文件中的一個一個串

name="${name/.step*_*/}" 
name="${name/.pdb/}" 
name="${name/_visu/}" 
name="${name/rmsf_/}" 

2製成像name =「$ {name/date /}」一樣的運算符?

+0

什麼是可以在這個字符串'rmsf_visu_AT1_dry_apo.2rep.step7_1.pdb'改變實體?例如「AT」後面的「1」或「rep」前面的「2」?你可以舉更多的例子 – Inian

+0

所有的東西都可以varried :-)所以我只需要對我的例子進行一些修改就可以將它合併到一個命令中。但最重要的是如何正確刪除日期,這可能在文件名的任何地方? –

+0

@ Own12121325:除非您提供更多示例以顯示名稱變體,否則您將不會再獲得任何幫助。 – Inian

回答

0

如果您想要一行命令,最好使用cut代替。

ls rmsf_visu_AT1_dry_apo.2rep.step7_1.pdb|cut -c11-26

如果文件名長度是可變的,然後使用此:

ls rmsf_visu_AT1_dry_apo.2rep.step7_1.pdb|cut -d_ -f3-5|cut -d. -f1-2