我正在尝试更改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
答案 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)