我有以下 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
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我想将端口提取到简单的csv
输出
80,53
Run Code Online (Sandbox Code Playgroud)
我试过
jq -r '.[]."ports" | map(.port) | @csv' 105.105.105.105_tcp.json
Run Code Online (Sandbox Code Playgroud)
和
jq -r '.[]."ports" | map(.port) | join(",")' 105.105.105.105_tcp.json
Run Code Online (Sandbox Code Playgroud)
但它们都不起作用。
这是一个仅限 jq 的解决方案:
jq -r '[ .[].ports[].port ]|@csv' network.json
80,53
Run Code Online (Sandbox Code Playgroud)
这里的方法是检索端口号,将它们包装成一个数组,然后将其转换为 CSV 格式。