使用 vscode 删除\更改 LDIF 中的特定属性

如何解决使用 vscode 删除\更改 LDIF 中的特定属性

我正在将 LDAP 数据库导出到 LDIF,我需要稍微清理一下。有一些我不再想要的属性。如果是单行属性就很简单:

# Entry 23: cn=dwhite,ou=ORG1,o=Root
dn: cn=dwhite,o=Root
objectclass: person
objectclass: inetorgperson
objectclass: webadmaccount
sn: white
cn: dwhite
description: don.white@company.com
givenname: Don
mail: 5551234567@txt.att.net
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,o=Root
objectclass: person
objectclass: inetorgperson
objectclass: webadmaccount
sn: Lee
cn: jlee
userpassword: {SSHA}+CreNAoXMO3XMIWxxaWsA2r3ozyeCBEShn
description: jay.lee@company.com
givenname: Jay
mail: 5551234567@txt.att.net
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 )。似乎我应该能够编写一个正则表达式来选择从 ^webadmdataA8tMd3g=\n\n 的所有内容,但我一生都无法让它工作。我希望有一个正则表达式或 VSCode 大师可以提供帮助。提前致谢。

解决方法

好吧,我不知道为什么我以前认为这不起作用,但确实如此。以下正则表达式将执行我想要的操作: ^webadmdata:.(.|\n)+?A8tMd3G=$\n

显然 VSCode 默认为惰性限定符。见下文: screenshot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?