0

我正在运行一个进程,它使用文件 parameters.py 中定义的一组参数

现在,我想将其中一个参数的值扫过一定范围。因此,我编写了一个批处理文件来自动化该过程。

问题

我的问题是我需要修改文件参数的第 20 行,从 tovalue = 200设置参数的新值。value = $VAR$VAR

问题

是否有允许更改文件的特定目标行的 bash 命令?

谢谢你和欢呼。

4

3 回答 3

2

尝试使用执行此操作:

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

这将更改为value = 200value = $VAR20 行s///。是sed替换的骨架:s/before/after/

-i开关就地编辑文件

于 2013-02-07T15:06:48.547 回答
2

虽然这当然是可能的,但我不会推荐它。有一天,有人会在此行或空行之前添加注释,您的脚本将中断。

改用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,
}
于 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 回答