正则表达式以捕获conf文件的注释行

时间:2011-08-15 03:10:22

标签: regex bash sed

为了在conf文件中找到此行pm.max_children = 50并将其更改为pm.max_children = 5,我使用的是:

s/^\(pm.max_children = \).*/\15/

在这种情况下,可以评论或不评论该行(使用';'或'#')。我怎样才能在单个正则表达式中处理它与sed一起使用?

如果CONF_FILE具有以下内容:

pm.max_children = 500
;pm.max_children = 500
#pm.max_children = 500

这就是我需要完成的事情:

pm.max_children = 5
pm.max_children = 5
pm.max_children = 5

1 个答案:

答案 0 :(得分:1)

我的计算机上的

似乎不支持?,但您可以改为使用*

s/^[#;]*[:space:]*\(pm.max_children = \).*/\15/

这匹配0个或更多#;个字符,后跟0个或更多个空白字符。

如果您不关心关键字之前的内容,请使用此选项,这更简单,但匹配任何内容:

s/^.*\(pm.max_children = \).*/\15/