如何解决需要修改一个包含在特定值下的json列表你能建议我sed或awk或任何Linux命令吗?
我的json列表如下:
#Input: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,{
"Network HW Interface": "NL2B","network_link": 3,"data": [
{
"switch_vlan":4001,"range":1
}
]
}
]
我需要修改“ Network HW Interface”(网络硬件接口):“ NL2A”下的“ switch_vlan”和“ range”的值,如下“ switch_vlan”:3005和“ range”:3一样。只需将该部分下的值修改为如下所示。
#期望的输出#
[
{
"Network HW Interface": "NL1A","data": [
{
"switch_vlan":3005,"range":3
}
]
},"range":1
}
]
}
]
我尝试了Robot框架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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。