我有一个类似于此
的ini
文件
[test]
foo=bar
如果我们将此ini
文件称为test1.ini
如何使用foo
将foobarbaz
的值更改为shell script
。
我尝试了以下内容,它对我不起作用。我没有在ini文件中看到更新的更改。我怎么写呢?
sed "/^foo=/s/=.*/=foobarbaz/" < test1.ini
您还有其他建议
答案 0 :(得分:5)
我个人使用更详细的sed
命令,因为相同的选项可能出现在几个不同的部分中:
sh$ sed -i.bak '/^\[test]/,/^\[/{s/^foo[[:space:]]*=.*/foo = foobarbaz/}' test1.ini
# ^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# make a in the right perform the substitution
# *backup* section as you want
作为一个安全网,我想补充一下:
sh$ diff test1.ini{,.bak}
2c2
< foo = foobarbaz
---
> foo=bar
答案 1 :(得分:4)
要更新文件,请使用sed:{/ p>的-i
选项
sed -i "/^foo=/s/=.*/=foobarbaz/" test1.ini
来自man sed
:
- 我[SUFFIX] , - 就地[=后缀]
编辑文件(如果提供SUFFIX,则进行备份)
所以你也可以这样做
sed -i.bak "/^foo=/s/=.*/=foobarbaz/" test1.ini