複数回編集して別のファイルとして保存する必要がある数値を含むファイルがあります。
例えば
- シータ = 0.0 度 ---> シータ = 30.0 度
- r = 1.0 ---> r = 4.0
- 入れて、成形して、visual_1_0 ; ---> put, molden, visual_r_theta ;
次に、編集した値の関数としてファイルを保存する必要があります (例: n2o_r_theta.inp)。
編集のために私が試した
#!/bin/bash
for i in {1..6}
do
r = 1.0
theta = i*15.0
cat n2o.inp |
sed -i.bk -Ee "s/(theta = )/\1${theta}\2/" \
-e "s/(r = )/\1${r}\2/" \
-e "s/(put, molden, )/\1visual_${r}_${theta};\2/" n2o_${r}_${theta}.inp
done
次のエラーが表示されます
- editor.scr: 5 行目: r: コマンドが見つかりません
- editor.scr: 6 行目: theta: コマンドが見つかりません
- sed: -e 式 #1、文字 18: `s' コマンドの RHS の無効な参照 \2
最良のシナリオは、このスクリプトが theta と r を 2 回ループできる場合です。私はsed を使用して、スクリプト内の URL 文字列を主な参照として編集しました。
最終結果- 不安定な多次元実装があるため、molpro スクリプトを遅延並列化できます
LC_ALL=C
for j in {4..4}
do
for i in {1..6}
do
r=$(echo "scale=1; $j/2.0" | bc -l)
theta=$(echo "scale=1; $i * 15.0" | bc -l)
sed "s/theta = 0.0/theta = $theta/;
s/rnn = 1.0 ang/rnn = $r ang/;
s/visual/visual_r_${r}_theta_${theta}/" < master.inp >n2o_r_${r}_theta_${theta}.inp
molpro2010s n2o_${r}_${theta}.inp &
done
done