将 json 输入子数组转换为 sring 顺序列表输出

问题描述 投票:0回答:1

这是我的输入:

{
  "alias-name": "soufriere",
  "member-entry": {
    "alias-entry-name": [
      "21:00:f4:e9:d4:50:56:7e",
      "21:00:f4:e9:d4:50:56:7f"
    ]
  }
}
{
  "alias-name": "stromboli",
  "member-entry": {
    "alias-entry-name": [
      "21:00:f4:e9:d4:50:56:8e"
      "21:00:f4:e9:d4:50:56:9e"
    ]
  }
}

我想把它变成输出

alicreate "soufriere",""21:00:f4:e9:d4:50:56:7e;21:00:f4:e9:d4:50:56:7f"
alicreate "stromboli","21:00:f4:e9:d4:50:56:8e;21:00:f4:e9:d4:50:56:9e"

我试过这个:

jq -r --arg quote "\"" ("alicreate " + $quote + ."alias-name" + $quote + "," + $quote + ."member-entry"."alias-entry-name"[] + $quote)'

但它给出的是一行一行而不是顺序的。

alicreate "soufriere","21:00:f4:e9:d4:50:56:7e"
alicreate "soufriere","21:00:f4:e9:d4:50:56:7f"
alicreate "stromboli","21:00:f4:e9:d4:50:56:8e"
alicreate "stromboli","21:00:f4:e9:d4:50:56:9e"
json jq
1个回答
0
投票

您可以使用

\"
生成引号,并使用字符串插值将值注入字符串:

jq -R '"alicreate \"\(."alias-name")\",\"\(."member-entry"."alias-entry-name".[])\""'
alicreate "soufriere","21:00:f4:e9:d4:50:56:7e"
alicreate "soufriere","21:00:f4:e9:d4:50:56:7f"
alicreate "stromboli","21:00:f4:e9:d4:50:56:8e"
alicreate "stromboli","21:00:f4:e9:d4:50:56:9e"

演示

© www.soinside.com 2019 - 2024. All rights reserved.