无法使用sed

时间:2016-09-29 06:53:07

标签: sed text-processing

我有一个文件,其中包含以下行 -

[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的参数,我只想更改checker_loop_time

部分下的[arakoon_scaler_thresholds]

1 个答案:

答案 0 :(得分:1)

尝试此操作,一旦可以,请使用-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/\160/}' 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=$0}1' ip.txt 
checker_loop_time = 5463

[arakoon_scaler_thresholds]
checker_loop_time = 60
checker_loop_time = 766

前一行保存在变量