jq+更新json文件并根据ID numb追加名称

2024-10-01 15:40:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我们要根据以下规则编辑json文件

我们需要在mazda字符串下生成名称car0X_hyb.com-

我们需要更新linux机器上的json文件

示例-ID=1

那么json将是

{
  "toyota": [
    "car1.com"
  ],
  "mazda": [
    "car01_hyb.com"
  ],
  "ford": [
    "car01_eng.com"
  ]
}

ID=4,那么json将

{
  "toyota": [
    "car1.com"
  ],
  "mazda": [
    "car01_hyb.com",
    "car02_hyb.com",
    "car03_hyb.com",
    "car04_hyb.com"
  ],
  "ford": [
    "car01_eng.com"
  ]
}

ID=6,那么json将

{
  "toyota": [
    "car1.com"
  ],
  "mazda": [
    "car01_hyb.com",
    "car02_hyb.com",
    "car03_hyb.com",
    "car04_hyb.com",
    "car05_hyb.com",
    "car06_hyb.com"
  ],
  "ford": [
    "car01_eng.com"
  ]
}

ID=10,那么json将

{
  "toyota": [
    "car1.com"
  ],
  "mazda": [
    "car01_hyb.com",
    "car02_hyb.com",
    "car03_hyb.com",
    "car04_hyb.com",
    "car05_hyb.com",
    "car06_hyb.com",
    "car07_hyb.com",
    "car08_hyb.com",
    "car09_hyb.com",
    "car10_hyb.com"
  ],
  "ford": [
    "car01_eng.com"
  ]
}

Tags: 文件comidjsonengfordcar1toyota
1条回答
网友
1楼 · 发布于 2024-10-01 15:40:46

您可以使用range生成后续数字流,使用它们填充模板字符串,并根据结果生成一个数组,如:

$ jq -n  argjson ID 5 '.mazda = [ range($ID) | "car\("0\(.+1)"[-2:])_hyb.com" ]'
{
  "mazda": [
    "car01_hyb.com",
    "car02_hyb.com",
    "car03_hyb.com",
    "car04_hyb.com",
    "car05_hyb.com"
  ]
}
$ jq -n  argjson ID 10 '.mazda = [ range($ID) | "car\("0\(.+1)"[-2:])_hyb.com" ]'
{
  "mazda": [
    "car01_hyb.com",
    "car02_hyb.com",
    "car03_hyb.com",
    "car04_hyb.com",
    "car05_hyb.com",
    "car06_hyb.com",
    "car07_hyb.com",
    "car08_hyb.com",
    "car09_hyb.com",
    "car10_hyb.com"
  ]
}

根据字符中ID的最大长度调整前导0-2。你知道吗

相关问题 更多 >

    热门问题