我有一个要从命令行更改的文件。问题是它有部分,在一些不同的部分,它有相同的值,我需要改变。
文件看起来像:

...

[DEFAULT]

findtime = 600
maxretry = 3

[ssh]

maxretry = 6

我只想在[DEFAULT]下更改maxretry。
也许有一个conifuration命令行搜索配置文件中的部分并更改名为X的值?
我用sed编写的命令更改了所有发生的事件,我只希望在[默认值]之后第一次发生
sudo sed -i "s/\(^maxretry =.*$\)/maxretry = ${NUMBER_OF_RETRIES}/" filename

谢谢你的帮助。
谢谢

最佳答案

使用awk的一种方法:

$ NUMBER_OF_RETRIES=5
$ awk '/^\[DEFAULT\]/{f=1;}f && /^maxretry =/{print "maxretry = "x;f=0;next}1' x=$NUMBER_OF_RETRIES file

首先,我们搜索默认部分,一旦找到,设置一个标志。搜索以maxretry开头的行,如果设置了标志,则执行替换。

10-05 18:35