0

我有一个文件 postmaster.log,我需要在其中找到模式并更改其值 我需要找到的模式是

MaxValue=3 #this could be any value not just 3

我需要将其值更改为

MaxValue=0

问题是也有类似的模式

"MaxValueSet=3" and "MaxValue is currently low" 

这也被替换了。我只需将 MaxValue=3 更改为 MaxValue=0 我尝试使用 sed

 sed -i 's/MaxValue=3/MaxValue=0/g' /home/postmaster.log

但这仅在 MaxValue=3 对任何其他值不起作用时才有效。

4

3 回答 3

4

使用正则表达式捕获MaxValue=后跟任意数字...

s/MaxValue=[0-9]+/MaxValue=0/g

应该管用。

于 2013-03-20T20:22:11.303 回答
2

听起来你想要

sed -i 's/^MaxValue=.*/MaxValue=0/' /home/postmaster.log

这将找到所有以 开头的行MaxValue=,并将这些行中的每一行替换为MaxValue=0

于 2013-03-20T20:22:14.253 回答
1

您也可以限制线路的sed工作:

sed -i '/^MaxValue=/s/=[[:digit:]][[:digit:]]*/=0/' /home/postmaster.log
于 2013-03-20T20:30:43.433 回答