[英]Need to modify a json list which comes under a particular value. Can you suggest me sed or awk or any linux commands?
我的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.