0

ファイルparameters.pyで定義された一連のパラメーターを使用するプロセスを実行しています

ここで、パラメータの 1 つの値を特定の範囲でスイープしたいと思います。そこで、手順を自動化するバッチファイルを作成しました。

問題

私の問題は、ファイル パラメータの 20 行目を から に変更する必要があることです value = 200value = $VARここ$VARで、パラメータの新しい値を設定します。

質問

ファイルの特定のターゲット行を変更できる bash コマンドはありますか?

ありがとうと乾杯。

4

3 に答える 3

2

でこれを試してください:

sed -i "20s/value = 200/value = $VAR/" file.txt

これは20 行目に変更value = 200されます。 は、置換のスケルトンです。value = $VARs///seds/before/after/

スイッチはファイルをその-i場で編集します

于 2013-02-07T15:06:48.547 に答える
2

確かに可能ですが、お勧めしません。ある日、誰かがこの行または空の行の前にコメントを追加すると、スクリプトが壊れます。

sed代わりに使用してください:

sed -e 's/value = 200/value = $VAR/' < parameters.py

さらに良い解決策は、すべてをparameters.py次のparameterdefaults.pyように移動することです。

parameterdefaults.py:

options = {
    "value": 200,
}

parameters.py:

import parameterdefaults

options = dict( **parameterdefaults.options ) # copy defaults

options['value'] = 10 # Override the few values you need to change

またはさらに良い:

parameters.py が必要なコード:

import parameterdefaults
import parameters

options = dict( **parameterdefaults.options ) # copy defaults
options.update( parameters.options ) # merge with changes

これで、次のように記述できます。

parameters.py:

options = {
    "value": 10,
}
于 2013-02-07T15:08:13.483 に答える
1

スクリプトをハッキングする代わりにこれを行う最も簡単な方法(最善ではありません)は、スクリプトを次のように変更することです。

value = 200

import os # somewhere at the top if need be.
value = int(os.environ.get('VAR', 200))

そうすれば、それが何であれ、呼び出しプロセスから変更できます。

于 2013-02-07T18:08:35.620 に答える