shell脚本在文件中查找和替换

时间:2013-03-20 20:19:11

标签: string shell design-patterns

我有一个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的任何其他值,它将无效。

3 个答案:

答案 0 :(得分:4)

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

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

应该有用。

答案 1 :(得分:2)

这听起来像你想要的

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

将找到以MaxValue=开头的所有行,并用MaxValue=0替换每一行。

答案 2 :(得分:1)

您也可以限制sed行的工作:

sed -i '/^MaxValue=/s/=[[:digit:]][[:digit:]]*/=0/' /home/postmaster.log