这个问题在这里已有答案:
我有一个config.py文件,参数定义为
class A:
path='/a/b/c'
...
class B:
path='/d/e/f'
...
我正在尝试使用来自Bash脚本的path
修改class A
中的config.py
中的参数sed -i
:
sed -i <脚本用类A中的/ x / y / z /替换路径值> config.py
预期结果:
class A:
path= '/x/y/z'
...
class B:
path= '/d/e/f'
...
我研究了如何使用以下方法打印路径变量的值:
sed -i '/A/,/path/p' config.py
我怎么能更换这个值呢?
这个sed解决方案解决了您的问题:1
sed -i "
/class A/,/path/ {
s!path=.*!path='/x/y/z'!
}
" config.py
或者如果你想要一行:
sed -i "/class A/,/path/{s!path=.*!path='/x/y/z'!}" config.py
进一步说明:
/class A/,/path/
范围内搜索,然后在该范围内调用s///
替换。!
命令中使用s///
作为备用分隔符。1在Mac OS X上使用GNU sed进行测试。