shell 如何使用sed在特定行的末尾添加逗号

dgenwo3n  于 2023-06-24  发布在  Shell
关注(0)|答案(2)|浏览(162)

/etc/docker/daemon.json的内容是:

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "log-driver": "json-file"
}

第一个问题:
我想在包含log-driver字符串的行的末尾添加一个逗号,我应该如何使用sed命令编写它?
修改内容如下:

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "log-driver": "json-file",
}

第二个问题:
我想在log-driver行下添加一些东西,我应该如何使用sed来完成?
修改内容如下:

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "log-driver": "json-file",
    "log-opts": { 
       "max-size": "50m", 
       "max-file": "5" 
    }
}
8iwquhpp

8iwquhpp1#

我推荐使用JSON专用工具来操作JSON数据

jq '.["log-opts"] = {"max-size": "50m", "max-file": "5"}' daemon.json
{
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  },
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "5"
  }
}

要覆盖原始文件,请执行以下操作:
1.

jq '...' daemon.json > daemon.json.tmp && mv daemon.json{.tmp,}

1.使用moreutils包中的sponge

jq '...' daemon.json | sponge daemon.json
eqqqjvef

eqqqjvef2#

sed /log/s/$/,/g文件;
.....................

相关问题