我尝试在zabbix中为portworx卷做LLD,但是我对JSON没有太多的经验。我有两个文件:
文件1
10.10.10.100
10.10.10.101
10.10.10.102
文件2
host 1
host 2
host 3
然后我可以使用cat raw_name | jq -R '.' | jq -s '{NAME:map({"{#NAME}":.})}'
将它们转换为JSON并得到:
{
"NAME": [
{
"{#NAME}": "host 1"
},
{
"{#NAME}": "host 2"
},
{
"{#NAME}": "host 3"
}
]
}
但是我如何同时使用它们来获得类似的东西
[
{
"{#IP}": "10.234.8.100",
"{#NAME}": "host 1"
},
{
"{#IP}": "10.234.8.101",
"{#NAME}": "host 2"
},
{
"{#IP}": "10.234.8.102",
"{#NAME}": "host 3"
}
]
答案 0 :(得分:2)
使用paste
并排合并输入文件。然后在JQ中,用制表符(paste
的默认输出定界符)分隔每一行,并将生成的零件用于构建对象。
paste file1 file2 | jq -Rn '[
inputs
| split("\t")
| {"{#IP}": .[0], "{#NAME}": .[1]}
]'
没有paste
,情况会变得有些复杂:
jq -Rn '[ inputs ]
| (length / 2) as $i
| [ .[:$i], .[$i:] ]
| transpose
| map({"{#IP}": .[0], "{#NAME}": .[1]})' file1 file2