使用 jq 在 json 文件中查找并附加一个字符串

Find and append an string in json file using jq

我有一个包含以下内容的 Json 文件 meta.json,我想使用 jq 过滤器在下面的 json 文件中进行查找和追加操作。例如下面的 name 的 json 值是 demo 所以,像 -test 这样附加一个字符串,所以最终值将是 demo-test

{
  "version": "2.2.0",
  "vname": "tf",
  "data": {
    "name": "demo",
    "udn": {
      "description": "The `main` tf in this template creates a resource`. "
    }
  }
}

更新后的 json 文件应包含如下数据

{
  "version": "2.2.0",
  "vname": "tf",
  "data": {
    "name": "demo-test",
    "udn": {
      "description": "The `main` tf in this template creates a resource`. "
    }
  }
}

JQ滤镜支持吗?我们如何做到这一点?

使用jq

$ jq '.data.name |= . + "-test"' meta.json
{
  "version": "2.2.0",
  "vname": "tf",
  "data": {
    "name": "demo-test",
    "udn": {
      "description": "The `main` tf in this template creates a resource`. "
    }
  }
}

使用sed

$ sed '/\<name\>/s/[[:punct:]]\+$/-test&/' meta.json
{
  "version": "2.2.0",
  "vname": "tf",
  "data": {
    "name": "demo-test",
    "udn": {
      "description": "The `main` tf in this template creates a resource`. "
    }
  }
}