我正试图从 OSX 中的 DSCL
命令返回的以下 DN 中仅解析(使用 sed
)First Last
终端bash环境...
CN=First Last,OU=PCS,OU=guests,DC=domain,DC=edu
我已经从这个站点和其他站点尝试了多个正则表达式,问题非常接近我想要的...主要是 this question ...我已尽我所能尝试遵循建议(我不一定认为自己是新手...但绝对是正则表达式的新手...)
DSCL
返回 DN 列表,我只想将 First Last
打印到文本文件中。我曾尝试使用 sed
,但我似乎无法获得正确的功能。我愿意接受其他命令来解析输出。每行都以 CN=
开头,然后在 Last
和 OU=
之间有一个逗号。
非常感谢您的帮助!
最佳答案
我认为目前提供的所有正则表达式答案都是错误的,因为它们没有正确处理通用名称中引用的“,”字符。例如,考虑一个像这样的 distinguishedName:
CN=Doe\, John,CN=Users,DC=example,DC=local
最好使用能够解析可分辨名称组件的真实库。如果您在命令行上寻找快速的东西,请尝试将您的 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]'
(取决于安装了 python-ldap 库)。您可以使用 PHP 的内置 ldap_explode_dn() 函数做出类似的东西。
关于regex - 从专有名称解析通用名称的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11582584/