Macos 如何在osx中筛选出LDAP结果

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

当我使用命令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 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;下一步}

    • 打印子字符串($1,4)”、“$3”、“$5”、“$6”、“$7
      :打印第一个字段的子字符串(从字符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