我需要转换这种输出:
samaccountname: displayname
samaccountname2: displayname2
像这样:
{
"samaccountname": "displayname",
"samaccountname2": "displayname2"
}
你能帮我一下吗?
谢谢!
顺便说一句,这是 LDAP 搜索查询的输出,因此它需要从管道/标准输入接收数据。
谢谢!
最佳答案
如果您可以根据第一个冒号进行解析,则可以这样做:
jq -Rn '[inputs | capture("(?<key>[^:]*): *(?<value>.*)")] | from_entries'
您可能想要添加一个过滤器来做进一步的修剪。 (jq 有 ltrimstr
和 rtrimstr
以防有帮助。)
无正则表达式
或者(除了修剪):
jq -Rn '[inputs | index(":") as $i | {key: .[:$i], value: .[1+$i:]}] | from_entries'
ldap搜索
ldapsearch 有一个选项:
-B
Do not suppress display of non-ASCII values.
关于json - 使用 jq 将输出转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48996252/