代码之家  ›  专栏  ›  技术社区  ›  Philippe

使用jq更改所有键的值

jq
  •  1
  • Philippe  · 技术社区  · 4 年前

    我有这个包.json

    {
      "dependencies": {
        "body-parser": "^1.19.0",
        "eslint": "^7.15.0",
        "express": "^4.17.1"
      } 
    } 
    

    jq '.dependencies.eslint="latest"|.dependencies.express="latest"' package.json
    

    {
      "dependencies": {
        "body-parser": "^1.19.0",
        "eslint": "latest",
        "express": "latest"
      }
    }
    

    如何在不枚举单个键的情况下将所有版本更改为“最新版本”?

    2 回复  |  直到 4 年前
        1
  •  4
  •   hek2mgl    4 年前

    jq '.dependencies[]="latest"' package.json
    

    输出:

    {
      "dependencies": {
        "body-parser": "latest",
        "eslint": "latest",
        "express": "latest"
      }
    }
    
        2
  •  2
  •   peak    4 年前

    简洁、精确、易读的解决方案:

    .dependencies |= map_values("latest")
    
        3
  •  0
  •   Tom Jardine-McNamara    4 年前

    尝试:

    jq -r 'keys_unsorted[] as $k | .[$k]="latest" | .dependencies)'