使用 grep 和 cut 我返回了 nmap 扫描结果的 IP 和端口,如下所示:
192.168.1.221
80
443
192.168.1.223
25
期望的输出:
192.168.1.221:80
192.168.1.221:443
192.168.1.223:25
答案1
awk '/\./{ip = $0; next}; {print ip":"$0}'
该输入应该足够了。
请注意,nmap
可以选择以适合编程处理的格式输出,例如xml
.
答案2
您可以使用以下命令执行以下操作awk
:
awk '$1 ~ /[0-9]\.[0-9]+/{ip=$1; val=0; next } /^[0-9]+$/{port=$1; if(!(val++)); print ip":"port}' infile
答案3
一种使用 bash 脚本的解决方案:
for i in $(<input); do [ ${#i} -le 3 ] && printf '%s:%s\n' $ip $i || ip=$i; done
如果输入字符串长度大于 3 个字符,则将 ip 地址保存在变量中,ip:port
否则打印。替换input
为您的输入文件。 (如果您的端口号超过3个字符,您可以选择更大的值来匹配)
另一个:
while read i; do [ ${i/.} != $i ] && ip=$i || printf "%s:%s\n" $ip $i; done <input
如果ip 地址ip
包含点,则将其分配给变量,ip:port
否则打印。
答案4
我已经通过以下方法完成了
sed -n '/^[0-9]\{3\}\./,+1p' filename| sed "N;s/\n/:/g"
输出
192.168.1.221:80
192.168.1.223:25