簡體   English   中英

使用JQ從json文件中提取信息

[英]using JQ to extract information from json file

我目前有一個 JSON 文件,大約有 15K 行代碼。 我希望提取一些信息,並可以使用下面的命令將其單獨提取到 4 個單獨的 CSV 文件中。 我不知道是否可以將其簡化為單個命令,以便所有數據整齊地進入 CSV。

這是我到目前為止所擁有的。

jq -r '.ServiceEngine[]?.data_vnics[]?.vlan_interfaces[]?.vnic_networks[].ip.ip_addr.addr' config_AviCluster.json > config_AviCluster.IP_address.csv
jq -r '.ServiceEngine[]?.data_vnics[]?.vlan_interfaces[].if_name' config_AviCluster.json > config_AviCluster.Interface_Name.csv
jq -r '.ServiceEngine[]?.data_vnics[]?.vlan_interfaces[]?.vnic_networks[].ip.mask' config_AviCluster.json > config_AviCluster.IP_Mask.csv
jq -r '.ServiceEngine[]?.data_vnics[]?.vlan_interfaces[].vlan_id' config_AviCluster.json > config_AviCluster.vlan_ID.csv

那是 4 個單獨的命令,然后我手動將 CSV 合並到一個文件中。 這可以改進嗎? 如果是這樣,任何建議和指導都會很棒。

親切的問候

理論上,下面應該創建一個包含新信息的新 JSON 結構。 但是需要一個樣本數據集來准確測試它。

jq -r '.ServiceEngine[]?.data_vnics[]?.vlan_interfaces[]|{ip_addr: .vnic_networks[].ip.ip_addr.addr, netmask: .vnic_networks[].ip.mask, iface: .if_name, vlan: .vlan_id}' config_AviCluster.json

Output

{
    "ip_addr": "0.0.0.0",
    "netmask": "255.255.255.0",
    "iface": "eth0",
    "vlan_id": "1"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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