我在列表中输出了一个IPv4地址列表,每个列表之间用\ n分隔。我想将其导入到的程序期望它采用以下格式:
{
"data":[
{ "IP":"127.0.0.1" },
{ "IP":"192.168.0.1" }
]
}
上面的输入数据应该是这样的:
127.0.0.1
192.168.0.1
我一直在jq cookbook中寻找想法,但是我能够串连的最接近的位置是使用[]而不是{},而不是内部数据,并且只包含没有键的值。
jq -sR '[sub("\n$";"") | splits("\n") | sub("^ +";"") | [splits(" +")]]'
输出:
[
[
"127.0.0.1"
],
[
"192.168.0.1"
]
]
答案 0 :(得分:3)
这是一个解决方案:
jq -Rn '{data: [ {IP: inputs} ] }' input.txt
如果这看起来有些不可思议,那么您可能想使用更普通的变体:
jq -Rn '{data: [ inputs | {IP: .} ] }' input.txt
当然,在实践中,您可能还希望删除输入中的多余空格,过滤掉注释,执行有效性检查或过滤掉无效输入...