Macos 如何在osx中筛选出LDAP结果
当我使用命令ldapwhoami时,它返回以下内容:Macos 如何在osx中筛选出LDAP结果,macos,ldap,Macos,Ldap,当我使用命令ldapwhoami时,它返回以下内容: SASL/GSSAPI authentication started SASL username: snegoesc@42.FR SASL SSF: 112 SASL data security layer installed. dn:uid=snegoesc,ou=2017_paris,ou=2017,ou=paris,ou=people,dc=42,dc=fr 我需要的只是这个: SASL/GSSAPI authentication s
SASL/GSSAPI authentication started
SASL username: snegoesc@42.FR
SASL SSF: 112
SASL data security layer installed.
dn:uid=snegoesc,ou=2017_paris,ou=2017,ou=paris,ou=people,dc=42,dc=fr
我需要的只是这个:
SASL/GSSAPI authentication started
SASL username: snegoesc@42.FR
SASL SSF: 112
SASL data security layer installed.
uid=snegoesc,ou=2017,ou=people,dc=42,dc=fr
所以,我的问题是:如何过滤结果?
我将这个命令放在一个.sh文件中,因此如果我可以使用文件中的命令处理输出,然后显示,那也没关系。使用SED
ldapwhoami | sed -E 's/^dn:uid=([^,]*),ou=[^,]*,ou=([^,]*),.*ou=people,dc=42,dc=fr/uid=\1,ou=\2,ou=people,dc=42,dc=fr/g'
SASL/GSSAPI authentication started
SASL username: snegoesc@42.FR
SASL SSF: 112
SASL data security layer installed.
uid=snegoesc,ou=2017,ou=people,dc=42,dc=fr
它的作用是:
s/^dn:uid=([^,]*),ou=[^,]*,ou=([^,]*),.*ou=people,dc=42,dc=fr
匹配行的开头:^dn:uid=
dn:uid=
:捕获所有内容,直到下一个([^,]*)
,
:匹配任何ou=[^,]*,
ou=…
:捕获下一个ou=([^,]*)
ou=…
:匹配由*ou=people,dc=42,dc=fr
ou=people,dc=42,dc=fr完成的任何内容
snegosc
和2017
(第二个ou)
dn:uid=snegosc,ou=2017\u paris,ou=2017,ou=paris,ou=people,dc=42,dc=fr
并根据以下内容进行替换:
uid=\1,ou=\2,ou=people,dc=42,dc=fr
意思是:uid=,ou=,ou=people,dc=42,dc=fr
使用AWK(仅在gnu linux上测试,需要适应macosx AWK实现)
它的作用是:
:将分隔符设置为-F“,”
,
$1~/^dn:///code>:如果行的第一个字段与
匹配(即行以^dn:
开头),则转至dn:
:{print substr($1,4)”、“$3”、“$5”、“$6”、“$7;下一步}
:打印第一个字段的子字符串(从字符4到结尾),然后打印字段3、5、6、7打印子字符串($1,4)”、“$3”、“$5”、“$6”、“$7
:继续执行下一行,但不执行以下代码next
:打印行{print$0}
ldapwhoami | awk -F"," '$1~/^dn:/{print substr($1,4)","$3","$5","$6","$7; next}{print $0}'
SASL/GSSAPI authentication started
SASL username: snegoesc@42.FR
SASL SSF: 112
SASL data security layer installed.
uid=snegoesc,ou=2017,ou=people,dc=42,dc=fr