是否有一种方法可以组合由逗号分隔的特定键的多个值。在我的例子中,我试图打印多个service.names值,这样它们就可以用用逗号分隔的一行打印出来。
如何将用逗号分隔的service.name值组合起来,以便打印如下所示:
{
"number": 1,
"service name": "FTP-Server, SSH-Server"
}我在下面的pyjq中尝试过,但是它通过一个完整的单独块来分隔值。
.group[].group[] | { "number": .number, "service name": .service[].name }这是我得到的输出
{
"number": 1,
"service name": "FTP-Server"
}
{
"number": 1,
"service name": "SSH-Server"
}在下面给出的相同数据中有/没有对象字典。我可以接受任何格式。
启用对象字典的JSON文件
{
"objects-dictionary": [
{
"name": "FTP-Server",
"port": "21",
"type": "service-tcp",
"uid": "ef245528-9a3d-11d6-9eaa-3e5a6fdd6a6a"
},
{
"name": "SSH-Server",
"port": "22",
"type": "service-tcp",
"uid": "dff4f7ba-9a3d-11d6-91c1-3e5a6fdd5151"
}
],
"base": [
{
"number": 1,
"service": [
"ef245528-9a3d-11d6-9eaa-3e5a6fdd6a6a",
"dff4f7ba-9a3d-11d6-91c1-3e5a6fdd5151"
],
"uid": "90088436-ac42-4363-84a6-3dbebf3c11f0"
}
]
}没有对象字典的JSON文件
{
"group": [
{
"group": [
{
"number": 1,
"service": [
{
"name": "FTP-Server",
"port": "21",
"type": "service-tcp",
"uid": "ef245528-9a3d-11d6-9eaa-3e5a6fdd6a6a"
},
{
"name": "SSH-Server",
"port": "22",
"type": "service-tcp",
"uid": "dff4f7ba-9a3d-11d6-91c1-3e5a6fdd5151"
}
],
"uid": "90088436-ac42-4363-84a6-3dbebf3c11f0"
}
]
}
]
}发布于 2018-10-01 11:19:50
目前还不清楚您期望的输出是什么,但考虑到最后一个示例并使用jq,您可以将两个服务名称连接在一起:
<file jq '[.group[].group[].service[].name] | join(",")'注意,join需要一个数组,所以name需要在数组[ ... ]中。
如果需要在对象本身中添加此字符串,则可以执行以下操作:
<file jq '.service.name=([.group[].group[].service[].name] | join(","))'发布于 2018-10-01 13:33:22
对于第二个JSON文本,以下过滤器:
.group[].group[]
| { "number": .number, "service name": ([.service[].name]|join(", ")) }产生您所期望的输出(包括逗号后面的空格):
{
"number": 1,
"service name": "FTP-Server, SSH-Server"
}https://stackoverflow.com/questions/52588722
复制相似问题