以下是我的观点:

{
  "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"

推荐答案

迭代数组会产生它的项.要将这些项目连接到单个字符串中,请使用join filter.此外,在字符串内部,您可以使用\"生成引号,使用string interpolation \(…)注入值.

jq -r '"alicreate \"\(."alias-name")\",\"\(
  ."member-entry"."alias-entry-name" | join(";")
)\""'
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"

Demo

请注意,您可能希望正确转义这些值,而不是只用双引号将它们括起来,但使用哪种编码在很大程度上取决于输出的用例.

Json相关问答推荐

使用Jolt库对多个数组进行嵌套循环

对面的行/列进行排序时可能出现错误

使用WSO2 JsonTransform Mediator对空值执行JsonExceptionUndeletedOperationException

PowerShell脚本未按预期生成预期的JSON输出

如何创建可由Gin序列化到json的排序键值映射?

有没有办法让serde_json正确/不正确地处理NaN、inf和-inf(IEEE 754特殊标准)?

简单条形图和有序分类中条形图的 colored颜色 梯度

错误:在 NX 工作区中找不到模块../swagger.json

Jolt 转换数组对象并将某些字段移动到嵌套数组

匹配来自不同数组的值

使用 ConvertFrom-Json 后,Powershell 访问 JSON 中的嵌套对象

Swift:如何从字典中删除空值?

IE中Json响应下载(7~10)

Spring MVC控制器中的JSON参数

错误未判断调用put(K, V)作为原始类型java.util.HashMap的成员

gson:将 null 视为空字符串

请求返回字节,我无法解码它们

运算符不存在:json = json

Jersey 2.0 相当于 POJOMappingFeature

NSURLRequest 中不支持的 URL