Json
如何使用 jq 將多個 JSON 對像中的特定值解析為 csv
我有以下 json
[ { "ip":"105.105.105.105", "timestamp":"1543746097", "ports":[ { "port":80, "proto":"tcp", "status":"open", "reason":"syn-ack", "ttl":128 } ] }, { "ip":"105.105.105.105", "timestamp":"1543746097", "ports":[ { "port":53, "proto":"tcp", "status":"open", "reason":"syn-ack", "ttl":128 } ] } ]
我想將埠提取到簡單的
csv
輸出80,53
我試過
jq -r '.[]."ports" | map(.port) | @csv' 105.105.105.105_tcp.json
和
jq -r '.[]."ports" | map(.port) | join(",")' 105.105.105.105_tcp.json
但它們都不起作用。
這是一個僅限 jq 的解決方案:
jq -r '[ .[].ports[].port ]|@csv' network.json 80,53
這裡的方法是檢索埠號,將它們包裝成一個數組,然後將其轉換為 CSV 格式。
我能夠通過
jq -r '.[]."ports" | .[].port' 105.105.105.105_tcp.json | tr '\n' ',' | sed 's/,*$//g'
但是我想知道它是否可以以更優雅的方式完成。