[英]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.