json 数组中的前两个元素并将它们连接起来

envsm3lx  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(65)

我有一个如下数组

{
  "data": [
    [
      "2.16.1.0",
      "2.16.1.255",
      "256"
    ],
    [
      "2.16.3.0",
      "2.16.3.255",
      "256"
    ],
    [
      "2.16.6.0",
      "2.16.7.255",
      "512"
    ]
  ]
}

字符串
我试图得到以下输出:

2.16.1.0-2.16.1.255
2.16.3.0-2.16.3.255
2.16.6.0-2.16.7.255


到目前为止,我已经成功地输出了前两个必需值

cat ./data.txt | jq -r '.[][]|nth(0,1)'

2.16.1.0
2.16.1.255
2.16.3.0
2.16.3.255
2.16.6.0
2.16.7.255


但是我如何合并/加入它们呢?我不确定我的方向是否正确。

wi3ka0sx

wi3ka0sx1#

字符串插值也可以在这里工作:

jq -r '.data[] | "\(.[0])-\(.[1])"'

字符串
或字符串连接:

jq -r '.data[] | .[0] + "-" + .[1]'

ssgvzors

ssgvzors2#

您可以选择数组中的前2个项目(.[0:2]),然后选择join(),并使用-
如果你需要2项目的动态,你可以使用.[:-1]只 * 删除 * 最后一个索引。关于.[x:y]切片的更多信息可以在Array string slice文档中找到。

.data[] | .[0:2] | join("-")

个字符
两者给予:

2.16.1.0-2.16.1.255
2.16.3.0-2.16.3.255
2.16.6.0-2.16.7.255

Online JQ Play Demo

相关问题