我有一个看起来像这样的.ini文件
[test]
foo=bar
我的文件名为test.ini
我想编写一个korn shell,它将修改我的test.ini文件以获取以下内容
[test]
foo=barzar
我尝试了以下但它不起作用。
sed -i.bak '/^\[test]/,/^\[/{s/^foo[[:space:]]*=.*/foo = foobarbaz/}' test.ini
有人有建议吗?
假设您只想在foo=something
块中更改[test]
:
sed -i.bak '/^\[test\]/,/^\s*foo\s*=/ s/^\s*foo\s*=.*/ foo = barzar/' test.ini
第一部分构成了[test]
和包含foo =
的行之间的行的地址,在foo之前和foo之后有可选的空格。替换只会在这里发生。
第一部分:/^\[test\]/,/^\s*foo\s*=/
第二部分是foo之前,foo之后和之后的空格插入替换:
第二部分:s/^\s*foo\s*=.*/ foo = barzar/
尝试:
perl -p -i -e 's/(foo=bar)/$1zar/g' test.ini