Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何使用sed替换json文件变量value中的值_Bash_Sed - Fatal编程技术网

Bash 如何使用sed替换json文件变量value中的值

Bash 如何使用sed替换json文件变量value中的值,bash,sed,Bash,Sed,我需要使用sed修改my.json文件中的第3行,如下所示 如何用分配给$username的变量值替换正在更改的键值(本例显示“group-1”) "name": "group-1", 你可以像下面这样替换 Linux sed -i 's/\"name\":.*/\"name\": '${username}'/g' "/path/to/my.json" MacOS sed -i "" 's/\"name\":.*/\"name\": '${username}'/g' "/pa

我需要使用sed修改my.json文件中的第3行,如下所示

如何用分配给$username的变量值替换正在更改的键值(本例显示“group-1”)

    "name": "group-1",

你可以像下面这样替换

Linux

 sed -i 's/\"name\":.*/\"name\": '${username}'/g' "/path/to/my.json"
MacOS

   sed -i "" 's/\"name\":.*/\"name\": '${username}'/g' "/path/to/my.json"

使用通用shell工具解析json时要非常小心。这个作业有一个非常特殊的工具叫做
jq
(json查询),它可以正确地处理json和json数组。也就是说,如果
“name”
在文件中只出现一次,您可以安全地使用以下表达式替换
$username
sed/\“name\”:/s/\(^[^:::*[:][]]\).$/\1\“$username\”,/“
根据示例,它应该是
sed's/“name”:./“name”:“${username}/g'
。您还需要注意引号后面可能存在的额外空格。接着说,你不应该尝试用错误的工具进行解析。它不会在结尾保留逗号。