使用jq提取JSON中IP与端口并拼接为IP:端口格式报错如何解决
解决方案
你可以直接使用jq的字符串插值功能实现拼接,正确命令如下:
cat output.json | jq -r '.[] | "\(.ip):\(.ports[].port)"'
也可以先把需要拼接的字段组装为数组再调用join方法:
cat output.json | jq -r '.[] | [.ip, .ports[].port] | join(":")'
错误原因说明
你之前的写法中,用逗号分隔.ip和.ports[].port的作用是将两个值作为独立的输出项依次传给下游操作,第一个传入join的是字符串类型的IP值,而join要求输入必须是数组,因此触发了「无法迭代字符串」的报错。
如果单个IP对应多个开放端口,上述命令也会自动逐行输出每个IP:端口的组合,符合常规扫描结果的输出习惯。
内容的提问来源于stack exchange,提问作者alone
相关产品推荐
相关产品推荐

