小编jus*_*guy的帖子

用 JQ 和正则表达式替换 JSON 中的值

我有以下 JSON,我想在其中更改“图像”字符串的“标签”。

{
  "taskDefinition": {
    "containerDefinitions": [
      {
        "name": "php",
        "image": "xxxxxx.dkr.ecr.eu-west-1.amazonaws.com/repo/php:latest",
        "cpu": 0,
        "memory": 512
      },
      {
        "name": "nginx",
        "image": "xxxxxx.dkr.ecr.eu-west-1.amazonaws.com/repo/nginx:latest",
        "cpu": 0,
        "memory": 256
      }
    ],
    "family": "service-be"
  }
}
Run Code Online (Sandbox Code Playgroud)

它应该变成:

{
  "taskDefinition": {
    "containerDefinitions": [
      {
        "name": "php",
        "image": "xxxxxx.dkr.ecr.eu-west-1.amazonaws.com/repo/php:new",
        "cpu": 0,
        "memory": 512
      },
      {
        "name": "nginx",
        "image": "xxxxxx.dkr.ecr.eu-west-1.amazonaws.com/repo/nginx:new",
        "cpu": 0,
        "memory": 256
      }
    ],
    "family": "service-be"
  }
}
Run Code Online (Sandbox Code Playgroud)

当然,“最新”可以是任何东西。

到目前为止,我找到了以下正则表达式子来修改字符串。

'.taskDefinition.containerDefinitions[].image | sub("(?<repo>.*:).*";  \(.repo)new")'
Run Code Online (Sandbox Code Playgroud)

但我想就地编辑它们并保留整个 JSON。到目前为止,我尝试更改该值未成功。我可以将图像值更改为固定字符串,但不能更改为替换的原始值。

我已经尝试了几种变体:

'.taskDefinition.containerDefinitions[].image |= . | sub("(?<repo>.*:).*"; "\(.repo)new")'
Run Code Online (Sandbox Code Playgroud)

似乎我可以简单使用的版本(在 Bitbucket …

regex jq

5
推荐指数
1
解决办法
3098
查看次数

linux将时间(对于不同的时区)转换为UTC

有没有办法,在linux中,有问题地获得给定时间字符串的UTC时间

Tue Dec  14 10:30:23 PST 2012
Tue Jan  4 11:30:23 EST 2013
Run Code Online (Sandbox Code Playgroud)

到UTC时间,无论(并且不更改)本地时区设置?

c linux timezone gcc

3
推荐指数
1
解决办法
2998
查看次数

标签 统计

c ×1

gcc ×1

jq ×1

linux ×1

regex ×1

timezone ×1