json - 使用 jq 将输出转换为 JSON

标签 json bash jq

我需要转换这种输出:

samaccountname: displayname
samaccountname2: displayname2

像这样:

{
"samaccountname": "displayname",
"samaccountname2": "displayname2"
}

你能帮我一下吗?

谢谢!

顺便说一句,这是 LDAP 搜索查询的输出,因此它需要从管道/标准输入接收数据。

谢谢!

最佳答案

如果您可以根据第一个冒号进行解析,则可以这样做:

jq -Rn '[inputs | capture("(?<key>[^:]*): *(?<value>.*)")] | from_entries'

您可能想要添加一个过滤器来做进一步的修剪。 (jq 有 ltrimstrrtrimstr 以防有帮助。)

无正则表达式

或者(除了修剪):

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/

相关文章:

javascript - SessionSet Json 值

bash - Bash:SSH输入到while循环

json - 如何使用jq删除数组元素?

json - [layers] 中 START_OBJECT 的未知键

bash - 使用 jq 更改变量中的 json 对象和字段值

javascript - Alexa ask-cli 如何添加自定义 https 服务器

json - 使用 map 和列表列将非规范化表导出到cassandra表

C# asp.net web api 返回 List<BsonDocument> 如何防止 Mongodb 序列化程序添加名称值字段?

bash - 冒号在 PATH 中的作用

bash - 符号链接(symbolic link)不是由 *.deb 包的 postinst 创建的。改为创建新文件