我有一个名为 settings.json 的配置文件,示例如下。
{
"token": "inserttokenhere",
"role": 766507041757069351,
"channel": 766507042113847383,
}
我正在尝试使用 sed 命令来替换标记后的值(在此示例中为 inserttokenhere)。我将用来替换它的值是一个环境变量。我的问题似乎是该文件已经充满了“。我尝试了很多不同的命令,但我无法让它们中的任何一个执行我想要的操作。以下命令与我得到的一样接近(我认为)。在下面的代码中,我使用 $LOGHOME 作为变量进行测试,因为它是基本操作系统的一部分。
sed -i "s%"token": "'.*'"%"token": "$LOGHOME""% settings.json
这哪一部分是错误的?
答案1
您sed
可以尝试这样的事情,尽管正如评论中提到的,正确的工具是jq
:
sed '/token/s;[^: ]*$;\"'"$HOME"'\";' settings.json
输出:
{
"token": "/home/user"
"role": 766507041757069351,
"channel": 766507042113847383,
}