正则表达式从专有名称解析通用名称

Ben*_*Ben 4 regex macos bash distinguishedname dscl

我正在尝试sed仅从OSX 终端bashFirst Last环境中的命令返回的以下 DN 进行解析(使用 )...DSCL

CN=First Last,OU=PCS,OU=guests,DC=domain,DC=edu

我已经尝试过来自该网站的多个正则表达式以及其他与我想要的问题非常接近的问题...主要是这个问题...我已尽力遵循建议(我不一定认为自己是新手。 ..但绝对是正则表达式的新手..)

DSCL返回 DN 列表,我只想打印First Last到文本文件。我尝试过使用sed,但我似乎无法获得正确的功能。我愿意接受其他命令来解析输出。每行都以 开头,然后和CN=之间有一个逗号。LastOU=

非常感谢您的帮助!

Jos*_*idt 7

我认为到目前为止提供的所有正则表达式答案都是有问题的,因为它们不能正确处理通用名称中带引号的“,”字符。例如,考虑一个类似的distinguishedName:

CN=Doe\, John,CN=Users,DC=example,DC=local
Run Code Online (Sandbox Code Playgroud)

最好使用能够解析可分辨名称组件的真实库。如果您想在命令行上快速查找某些内容,请尝试将 DN 通过管道传输到如下命令:

    echo "CN=Doe\, John,CN=Users,DC=activedir,DC=local" | python -c 'import ldap; import sys; print ldap.dn.explode_dn(sys.stdin.read().strip(), notypes=1)[0]'
Run Code Online (Sandbox Code Playgroud)

(取决于是否安装了 python-ldap 库)。您可以使用 PHP 的内置 ldap_explode_dn() 函数编写类似的内容。