使用jq将输出转换为JSON

时间:2018-02-26 20:05:59

标签: json bash jq

我需要转换这种输出:

samaccountname: displayname
samaccountname2: displayname2

这样的事情:

{
"samaccountname": "displayname",
"samaccountname2": "displayname2"
}
你可以帮我一把吗?

谢谢!

顺便说一句,这是LDAP搜索查询的输出,因此需要从pipe / stdin接收数据。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果你可以根据第一个冒号进行解析,这样就可以了:

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

您可能需要添加过滤器以进行进一步修剪。 (如果有帮助,jq有ltrimstrrtrimstr。)

正则表达式 - 自由

或(除了修剪):

jq -Rn '[inputs | index(":") as $i | {key: .[:$i], value: .[1+$i:]}] | from_entries'

ldapsearch的

ldapsearch有一个选项:

  

-B

     

不要禁止显示非ASCII值。