json - 需要修改属于特定值的 json 列表。你能建议我 sed 或 awk 或任何 linux 命令吗?
问题描述
我的json列表如下:
#输入:json列表#
[
{
"Network HW Interface": "NL1A",
"network_link": 0,
"default": "true",
"data": [
{
"switch_vlan":1001,
"range":1
}
]
},
{
"Network HW Interface": "NL1B",
"network_link": 1,
"data": [
{
"switch_vlan":2001,
"range":1
}
]
},
{
"Network HW Interface": "NL2A",
"network_link": 2,
"data": [
{
"switch_vlan":3001,
"range":1
}
]
},
{
"Network HW Interface": "NL2B",
"network_link": 3,
"data": [
{
"switch_vlan":4001,
"range":1
}
]
}
]
我需要修改“网络硬件接口”下“switch_vlan”和“range”的值:“NL2A”如下“switch_vlan”:3005和“range”:3。只有该部分下的值需要修改,如下所示。
#预期输出#
[
{
"Network HW Interface": "NL1A",
"network_link": 0,
"default": "true",
"data": [
{
"switch_vlan":1001,
"range":1
}
]
},
{
"Network HW Interface": "NL1B",
"network_link": 1,
"data": [
{
"switch_vlan":2001,
"range":1
}
]
},
{
"Network HW Interface": "NL2A",
"network_link": 2,
"data": [
{
"switch_vlan":3005,
"range":3
}
]
},
{
"Network HW Interface": "NL2B",
"network_link": 3,
"data": [
{
"switch_vlan":4001,
"range":1
}
]
}
]
我尝试了机器人框架 json 关键字。它没有帮助。然后尝试遵循 sed 命令,这有助于替换该值,但它会影响所有相似的值。
sed -E 's/"switch_vlan":3001,/"switch_vlan":3005/g' file.json > file1.json
sed -E 's/"range":1/"range":3/g' file1.json > file.json
因此,想要检查该特定字段实例的东西:“网络硬件接口”:“NL2A”,并且只会修改该字段下特定键的值。
解决方案
使用 sed,您可以选择一系列行来进行替换。我用你的数据对此进行了测试,它奏效了
sed -E '/"Network HW Interface": "NL2A"/,/\]/{
s/"switch_vlan":3001,/"switch_vlan":3005/g
s/"range":1/"range":3/g
}' file.json
推荐阅读
- firebase - Future Builder 需要永远在颤动中获取图像
- html - 如何创建一个 HTML 表单,在没有 PHP 的情况下通过电子邮件将响应发送到您的收件箱?
- swift - 队列任务完成前 Swift Spinner 消失
- salesforce-marketing-cloud - 自定义旅程构建器活动短信 - Salesforce Marketing Cloud
- python - 为什么带有 tensorflow 的 python 解释器不能与 VS 代码一起工作并且没有给我任何错误
- python - 在 PyQt5 中舍入 QLabel 的角
- assembly - 汇编 x86 简单计算器不显示结果
- python - tf.keras.losses 中的“减少”参数
- excel - 在excel中打开xml表
- android - 由于权限被拒绝错误,使用 ndk 构建的 android 项目失败