Я экспортирую базу данных LDAP в LDIF, и мне нужно немного ее почистить. Есть некоторые атрибуты, которые мне больше не нужны. Если это однострочный атрибут, то все просто:
# Entry 23: cn=dwhite,ou=ORG1,o=Root
dn: cn=dwhite,ou=ORG1,o=Root
objectclass: person
objectclass: inetorgperson
objectclass: webadmaccount
sn: white
cn: dwhite
description: [email protected]
givenname: Don
mail: [email protected]
o: ORG1
uid: dwhite
userpassword: {SSHA}YrGx7L7L8xxxiMzuUzL+f0j+i73uFTYEPnu
webadmdata: OpenOTP.RejectCount={wcrypt}eAw+r6VX6l8lioB+1KX/6A==,OpenOTP.Las
tLogin={wcrypt}hQCwWl0KRdsiXyG7UPxPxo/WphEkyD6NPTKor8FCA5E=,OpenOTP.LoginCot
0f5vQVl1ippSdKFiGeACiJbFWHsfs=,DataMode=A8tMd3g=
# Entry 24: ou=ORG2,o=Root
dn: ou=ORG2,o=Root
objectclass: organizationalunit
ou: ORG2
# Entry 25: cn=jlee,ou=ORG2,o=Root
dn: cn=jlee,ou=ORG2,o=Root
objectclass: person
objectclass: inetorgperson
objectclass: webadmaccount
sn: Lee
cn: jlee
userpassword: {SSHA}+CreNAoXMO3XMIWxxaWsA2r3ozyeCBEShn
description: [email protected]
givenname: Jay
mail: [email protected]
o: ORG2
uid: jlee
webadmdata: OpenOTP.RejectCount={wcrypt}OrtNikuuHCyBruxUTOq6eg==,OpenOTP.Las
tLogin={wcrypt}WUa965R8rFV9iHx7LrXrfzxEE3Gjd7TGiFz8AEJBmwU=,OpenOTP.LoginCo
unt={wcrypt}Qbamc7jYTL+14K1yaZS9kA==,OpenOTP.LastOTP={wcrypt}t+fDlGfP6kGIse
at8PHJdxJy15LSN4R+tJXr7B7L7+4=,DataMode=A8tMd3g=
В приведенном выше примере для удаления атрибута 'objectclass: webadmaccount' выполняется поиск и замена регулярным выражением, например: ^objectclass.*webadmaccount$
. Я знаю, что это кажется немного излишним с якорями, но в других местах LDIF вы можете найти это жало, встроенное в более длинную строку, поэтому якоря.
Теперь моя проблема возникает, когда я хочу избавиться от атрибутов «webadmdata:». Вы можете видеть, что они многострочные и не все одинаковой длины. Вот где я застрял, такое регулярное выражение: ^webadmdata:.*[\n\s]+.*
получит первые две строки, но затем завершит работу. Если я сделаю .*[\n\s]+.*
группу захвата и повторю ее с «+» в конце: (.*[\n\s]+.*)+
будет выбран весь файл (или произойдет сбой vscode ). Кажется, я должен быть в состоянии написать регулярное выражение, которое выберет все от ^webadmdata
до A8tMd3g=\n\n
, но я не могу заставить его работать. Я надеюсь, что есть гуру регулярных выражений или VSCode, которые могут помочь. Заранее спасибо.