使用shell脚本修改ini文件

时间:2013-10-24 13:25:35

标签: shell ini

我有一个类似于此

ini文件
[test]
foo=bar

如果我们将此ini文件称为test1.ini

如何使用foofoobarbaz的值更改为shell script

我尝试了以下内容,它对我不起作用。我没有在ini文件中看到更新的更改。我怎么写呢?

sed "/^foo=/s/=.*/=foobarbaz/" < test1.ini

您还有其他建议

2 个答案:

答案 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