我试图从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=开头,然后在Last和OU=之间有一个逗号。
非常感谢您的帮助!
发布于 2012-07-20 15:57:19
使用sed:
sed 's/^CN=\([^,]*\).*/\1/' input_file^匹配行开始的CN=文字字符串匹配(^,*)所有内容,直到逗号.* rest
发布于 2013-04-30 13:37:17
我认为到目前为止提供的所有正则表达式的答案都是错误的,因为它们没有正确处理普通名称中引用的',‘字符。例如,考虑像这样的distinguishedName:
CN=Doe\, John,CN=Users,DC=example,DC=local最好使用真正的库来解析distinguishedName的组件。如果您想在命令行中快速查找内容,请尝试将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库)。您可以用PHP的内置ldap_explode_dn()函数编写类似的内容。
发布于 2012-07-20 15:48:54
两个cut命令可能是最简单的(尽管不一定是最好的):
DSCL | cut -d, -f1 | cut -d= -f2首先,在逗号上拆分DSCL的输出,然后打印第一个字段("CN=First Last");然后在等号上拆分输出,然后打印第二个字段。
https://stackoverflow.com/questions/11582584
复制相似问题