无法使用 sed 替换一行

Unable to replace a line using sed

我有一个包含以下行的文件-

[arakoon_scaler_thresholds]
checker_loop_time = 3600

我想用下面一行替换上面两行 -

[arakoon_scaler_thresholds]
checker_loop_time = 60

我正在使用以下命令,但没有发生任何变化。

sed -i "s/arakoon_scaler_thresholds\nchecker_loop_time = 3600/arakoon_scaler_thresholds\nchecker_loop_time = 60/g" file.ini

注意 有多个名称为 checker_loop_time 的参数,我只想更改 [arakoon_scaler_thresholds] 部分下的那个 checker_loop_time

试试这个,一旦成功,使用 -i 选项进行就地编辑

$ cat ip.txt 
checker_loop_time = 5463

[arakoon_scaler_thresholds]
checker_loop_time = 3600
checker_loop_time = 766

$ sed -E '/arakoon_scaler_thresholds/{N;s/(checker_loop_time\s*=\s*)3600/0/}' ip.txt 
checker_loop_time = 5463

[arakoon_scaler_thresholds]
checker_loop_time = 60
checker_loop_time = 766

这将搜索 arakoon_scaler_thresholds,然后使用 N 获取下一行,然后执行所需的搜索和替换

您也可以使用awk

$ awk 'p ~ /arakoon_scaler_thresholds/{sub("checker_loop_time = 3600","checker_loop_time = 60")} {p=[=11=]}1' ip.txt 
checker_loop_time = 5463

[arakoon_scaler_thresholds]
checker_loop_time = 60
checker_loop_time = 766

前一行保存在变量中