如何使用python解析linux中的logrotate.conf文件

问题描述 投票:0回答:1

我正在尝试在 logrotate 配置文件中使用正则表达式取消注释字符串,这会取消注释所有具有可用字符串的行。

# create new (empty) log files after rotating old ones
#create

就我而言,我试图取消上面“创建”的注释。这取消了这两行的注释。

output_lines = []
lines = self.readFile(LOGROTATE_CONFIG_FILE)
for line in lines:
    if not re.search(r'\b' + str + r'\b', line):
        output_lines.append(line)
    else:
        if line.startswith('#'):
            l = re.sub(r'^ *#', '', line)
            output_lines.append(l)
        else:
            output_lines.append(line)
if len(output_lines) > 0:
    self.writeFile(LOGROTATE_CONFIG_FILE, output_lines)
python logrotate
1个回答
0
投票

您需要与

#<not-a-whitespace

匹配

更改当前的正则表达式

^ *#

^ *#(?=\S)

(?=...)
咒语的意思是“向前看”,也就是说我们希望在 octothorpe (
\S
) 之后有一个非空白 (
#
),但我们不希望它成为匹配的一部分 (所以不会被re.sub删除)

您可以在此处查看演示:https://regex101.com/r/iQtNS5/1

© www.soinside.com 2019 - 2024. All rights reserved.