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

标签 regex macos bash distinguishedname dscl

我正试图从 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= 开头,然后在 LastOU= 之间有一个逗号。

非常感谢您的帮助!

最佳答案

我认为目前提供的所有正则表达式答案都是错误的,因为它们没有正确处理通用名称中引用的“,”字符。例如,考虑一个像这样的 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/

相关文章:

C# 正则表达式获取带十进制数的特定字符

javascript - 使用 Regex 正/负前瞻替换字符?

python - 无法仅获取 1 次出现的链接

macos - 从另一个基于 C 的可执行文件获取 MAC os 中的进程命令行

objective-c - 如何从其他类设置 NSStatusBar 标题?

linux - 如何在脚本中通过双引号 echo 命令传递单引号以添加 cron 作业

regex - 使用indexof获取第三个斜杠

macos - 在 MacOS 中通过终端获取每个 CPU 内核的使用情况

bash - 日期后的文件列表

linux - 如何将 avprobe 的输出重定向到文件?