我已经声明了一个变量:username=user2
测试json内容如下: { "name": "user1", "city": "Texas" }
我想用变量用户名替换名称(即 user1)的值,我尝试了以下命令:sed -i 's/"name": "user1"/"name": $username/g'
输出为:
{ “名称”:$用户名,“城市”:“德克萨斯州” }
预期输出为:
{ “name”:“user2”, “city”:“德克萨斯州” }
如何实现?提前致谢
答案1
使用以下方式jq
:
jq -c --arg name "$username" '.name = $name'
假设您的输入数据是确切地正如您指定的那样,以下示例适用于 GNU sed:
sed -E 's/("name"\s*:\s*)"[^"]+"/\1"'"$username"'"/'