grep IP 和端口号到一行

grep IP 和端口号到一行

使用 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

相关内容