繁体   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