首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析公共名称和区分名称的正则表达式

解析公共名称和区分名称的正则表达式
EN

Stack Overflow用户
提问于 2012-07-20 15:39:01
回答 6查看 6.7K关注 0票数 4

我试图从OSX终端sed First Last环境中的DSCL命令返回的DN(s)中解析(用).

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

我尝试过从这个网站和其他与我想要的问题非常接近的多个规则.主要是this question。我已经尽我最大的能力遵循这个建议(我不一定认为自己是newbie...but,绝对是个新手。)

DSCL返回DNs的列表,我希望只将First Last打印到文本文件中。我尝试过使用sed,但似乎无法获得正确的函数。我可以使用其他命令来解析输出。每一行都以CN=开头,然后在LastOU=之间有一个逗号。

非常感谢您的帮助!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-07-20 15:57:19

使用sed:

代码语言:javascript
复制
sed 's/^CN=\([^,]*\).*/\1/' input_file

^匹配行开始的CN=文字字符串匹配(^,*)所有内容,直到逗号.* rest

票数 1
EN

Stack Overflow用户

发布于 2013-04-30 13:37:17

我认为到目前为止提供的所有正则表达式的答案都是错误的,因为它们没有正确处理普通名称中引用的',‘字符。例如,考虑像这样的distinguishedName:

代码语言:javascript
复制
CN=Doe\, John,CN=Users,DC=example,DC=local

最好使用真正的库来解析distinguishedName的组件。如果您想在命令行中快速查找内容,请尝试将DN连接到如下命令:

代码语言:javascript
复制
    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库)。您可以用PHP的内置ldap_explode_dn()函数编写类似的内容。

票数 7
EN

Stack Overflow用户

发布于 2012-07-20 15:48:54

两个cut命令可能是最简单的(尽管不一定是最好的):

代码语言:javascript
复制
DSCL | cut -d, -f1 | cut -d= -f2

首先,在逗号上拆分DSCL的输出,然后打印第一个字段("CN=First Last");然后在等号上拆分输出,然后打印第二个字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11582584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档