我正在寫一個bash腳本來自動盲目停靠(在蛋白質中發現綁定站點)。爲此,我在一個較小的重疊網格中劃分了一個大的3D網格。x,y和z座標的組合(存儲在三個不同的文件中)
我已經創建了三個文件,分別包含子網格中心的x,y和z座標。換句話說,一個文件包含所有可能的x座標(每行一個),第二個所有y座標和第三個所有z座標。座標有三位小數,可以是正數也可以是負數。
現在我想找到所有可能的x,y和z的組合。對於每個組合,我想創建一個文件夾(稱爲x1y1z1,x1y2z1,x1y3z1等),其中包含一個文本文件,其中包含與該特定組合相對應的x,y和z座標。
我找到了解決方案,使用Python的相關問題。但是,由於我對Python不熟悉,而且我已經定義了大量變量,所以我想知道是否有一種簡單的方法可以在bash或其他任何可以輕鬆集成的語言中執行此操作在我現有的bash腳本中。
親切的問候,
米羅
UPDATE:
這是馬特·d表示該解決方案的改編版本(感謝一百萬):
for x in $(cat centrex.tmp) ; do
for y in $(cat centrey.tmp) ; do
for z in $(cat centrez.tmp) ; do
xvar=$(expr "$x" : '\(.*\)=.*')
yvar=$(expr "$y" : '\(.*\)=.*')
zvar=$(expr "$z" : '\(.*\)=.*')
folder="${xvar}${yvar}${zvar}"
mkdir $folder
echo "center_x = "${x#*=} >> vinapar.conf
echo "center_y = "${y#*=} >> vinapar.conf
echo "center_z = "${z#*=} >> vinapar.conf
cp vinapar.conf $folder/
rm vinapar.conf
done
done
done
的理由這是最後我用這種方式格式化我的centreX.tmp文件:
x00=-15.349
x01=-10.349
x02=-5.349
...
這使我可以在等號(x01y23z09)之前根據塊命名文件夾,然後創建包含實際座標的文件。
不使用'$(貓xfile)',使用'而讀取X;執行echo $ x done
偉大的解決方案,謝謝。不幸的是,我是新的,我沒有足夠的「聲譽」來給你的答案投票。我編輯了我的原始問題以添加適合我的問題的解決方案,以防有人發現它有用。 – mirix
嗨弗雷德裏克,感謝您的提示。出於好奇,在這種情況下使用「while」的優勢是什麼? – mirix