更改文件的目标行



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

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

问题

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

问题

有没有bash命令可以更改文件的特定目标行?

谢谢大家,干杯。

尝试使用sed:执行此操作

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

这将把第20行的value = 200更改为value = $VARs///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

甚至更好:

需要备件的代码.py:

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

现在你可以写:

parameters.py:

options = {
    "value": 10,
}

要做到这一点而不是破解脚本,最简单的方法(但不是最好的)是将其从更改

value = 200

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

这样,它就可以从调用过程中进行修改。

相关内容

  • 没有找到相关文章

最新更新