我有一个文件,其中包含以下行 -
[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]
答案 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
前一行保存在变量
中