我運行的進程文件的目標線,它採用了一組在一個文件中定義的參數parameters.py更改
現在,我想橫掃的一個值參數超過一定範圍。因此,我寫了一個批處理文件來自動化該過程。
問題
我的問題是,我需要修改文件參數的20日線,從value = 200
到value = $VAR
,其中$VAR
設置參數的新值。
問題
有一個bash命令,允許更改文件的具體目標線?
謝謝你,歡呼聲。
我運行的進程文件的目標線,它採用了一組在一個文件中定義的參數parameters.py更改
現在,我想橫掃的一個值參數超過一定範圍。因此,我寫了一個批處理文件來自動化該過程。
問題
我的問題是,我需要修改文件參數的20日線,從value = 200
到value = $VAR
,其中$VAR
設置參數的新值。
問題
有一個bash命令,允許更改文件的具體目標線?
謝謝你,歡呼聲。
嘗試sed這樣做:
sed -i "20s/value = 200/value = $VAR/" file.txt
這將改變value = 200
到value = $VAR
第20行s///
是sed
替代的骨架:s/before/after/
的-i
開關編輯到位
儘管這當然有可能,但我不會推薦它。有一天,有人會在此行或空行之前添加註釋,並且腳本會中斷。
使用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
甚至更好:
codethatneedsparameters.py:
import parameterdefaults
import parameters
options = dict(**parameterdefaults.options) # copy defaults
options.update(parameters.options) # merge with changes
現在你可以這樣寫:
參數。潘岳:
options = {
"value": 10,
}
注意,這個解決方案替換所有出現的'value = 200',不僅是第20行 –
最簡單的方法(但不是最好的)做的,而不是黑客的腳本,這是它從
value = 200
改變
import os # somewhere at the top if need be.
value = int(os.environ.get('VAR', 200))
這樣它可以在調用過程中進行修改。
我不明白你的意思是* swept *。 – kojiro
聽起來你正在尋找[tag:sed],它允許你在一個流(或文件)中對一行進行編址並對其進行編輯,但是我不清楚爲什麼你在Bash中這樣做而不是提供一個您的Python腳本的參數。 – Johnsyweb
由於@Johnsyweb暗示或許你應該說明你想要實現的目標,就像用sed或類似的方式修改Python腳本似乎是錯誤的,你應該傳遞一個CLI參數或者改變它以便得到它來自環境的價值。什麼過程使用這個''parameters.py''另一個Python腳本或shell。? – sotapme