Bash 如何使用sed替换json文件变量value中的值
我需要使用sed修改my.json文件中的第3行,如下所示 如何用分配给$username的变量值替换正在更改的键值(本例显示“group-1”)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
"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'
。您还需要注意引号后面可能存在的额外空格。接着说,你不应该尝试用错误的工具进行解析。它不会在结尾保留逗号。