G1からG229までの変数を含むファイルがあります。 G230からG469に交換したいです。どうすればいいですか?このbashスクリプトを試しましたが、うまくいきません。
#!/bin/bash
for num in {1..229}
do
echo G$num
N=$(($num+229))
echo G$N
sed -i -e 's/$G$num/$G$N/g' file
done
ベストアンサー1
これはより多くの作業です(ところでperl
GNUはこれをsed
コピーしました):-i
perl -pi -e 's{\$G\K\d+}{
if ($& >= 1 && $& <= 229) {
$& + 229
} else {
$&
}}ge' file
またG0001
に変更されますG230
。これを望まない\d+
場合に変更できます[1-9]\d*
。
あなたのアプローチを使用すると、参照を変更してもファイルを229回書き直し、必要に応じて機能しなくなります。
A はs/\$G1/\$G230/g
に変更され$G12
、$G2302
次はs/\$G2/\$G231/g
に変更されますG231302
(s/\$G23/\$G252
に変更される式G2521302
で続きます)。