我正在运行一个进程,它使用文件 parameters.py 中定义的一组参数
现在,我想将其中一个参数的值扫过一定范围。因此,我编写了一个批处理文件来自动化该过程。
问题
我的问题是我需要修改文件参数的第 20 行,从 tovalue = 200
设置参数的新值。value = $VAR
$VAR
问题
是否有允许更改文件的特定目标行的 bash 命令?
谢谢你和欢呼。
我正在运行一个进程,它使用文件 parameters.py 中定义的一组参数
现在,我想将其中一个参数的值扫过一定范围。因此,我编写了一个批处理文件来自动化该过程。
问题
我的问题是我需要修改文件参数的第 20 行,从 tovalue = 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
如下:
参数defaults.py:
options = {
"value": 200,
}
参数.py:
import parameterdefaults
options = dict( **parameterdefaults.options ) # copy defaults
options['value'] = 10 # Override the few values you need to change
甚至更好:
需要参数的代码.py:
import parameterdefaults
import parameters
options = dict( **parameterdefaults.options ) # copy defaults
options.update( parameters.options ) # merge with changes
现在你可以写:
参数.py:
options = {
"value": 10,
}
执行此操作而不是破解脚本的最简单方法(但不是最好的方法)是将其从
value = 200
到
import os # somewhere at the top if need be.
value = int(os.environ.get('VAR', 200))
这样就可以从调用过程中修改它可能是什么。