我有一个ini
类似的文件
[test]
foo=bar
如果我们称这个ini
文件为test1.ini
例如,如何foo
使用.foobarbaz
shell script
我已经尝试了以下方法,但它对我不起作用。我没有在 ini 文件中看到更新的更改。我该怎么写?
sed "/^foo=/s/=.*/=foobarbaz/" < test1.ini
你有什么其他的建议
我个人使用更详细的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
要更新文件,请使用-i
sed 选项:
sed -i "/^foo=/s/=.*/=foobarbaz/" test1.ini
来自man sed
:
- i[后缀] , --就地[=后缀]
就地编辑文件(如果提供了 SUFFIX,则进行备份)
所以你也可以做
sed -i.bak "/^foo=/s/=.*/=foobarbaz/" test1.ini