使用ConfigParser删除配置文件中没有任何部分的行

时间:2013-12-01 03:30:32

标签: python linux configparser

我正在尝试更改Linux服务器上的.conf文件,但.conf文件中没有任何部分。我想在键/值对中搜索特定关键字,然后删除该行上方的几行以及该行下面的一些行。

如果没有章节标题,我该如何实现这一目标?我应该使用ConfigParser吗?

此外,整个文件中都有重复的键名。在下面的代码部分中,我想在“目录”行中搜索“关键字”,并删除上面的两行以及下面的其他内容。

database        ldbm
loglevel        0
directory       /home/name/NameServer/var/openldap-ldbm-CMDB-keyword
suffix          "o=CMDB-keyword"
suffix          "dc=CMDB-keyword,dc=com"
rootdn          "cn=admin,o=CMDB-keyword"
rootpw          (blahblah)
schemacheck     on
lastmod         off
sizelimit       100000
defaultaccess   read
dbnolocking
dbnosync
cachesize       100000
dbcachesize     100000000
dbcacheNoWsync
index objectclass pres,eq                                                      │
index default pres,eq                                                          │
index termName pres,eq

1 个答案:

答案 0 :(得分:0)

假设每个块以database行开头并以index termName pres,eq行结束,此脚本从input.conf读取并将这些块写入output.conf不包含的行directory....keyword

import re
with open('input.conf') as f, open('output.conf', 'w') as o:
    s = f.read()
    for x in re.findall(r'^database.*?index termName pres,eq\n', s, 
     re.DOTALL | re.MULTILINE):
            if not re.search(r'^directory.*keyword', x, re.MULTILINE):
                    o.write(x)