如何在 sed 命令中传递变量

如何在 sed 命令中传递变量

我已经声明了一个变量: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"'"/'

相关内容