簡體   English   中英

需要修改屬於特定值的 json 列表。 你能推薦我 sed 或 awk 或任何 linux 命令嗎?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM