Você solicitou awk
, mas isso é simples de fazer com o Perl, pois facilita a iteração em várias correspondências de uma expressão regular.
$ perl -ne '$host = $1 if /^Host: (\S+)/; while(m,(\d+)/open,g)
{ print "$host\t$1\n" } ' < nmap.out
10.0.0.99 135
10.0.0.99 139
...
perl -ne # Run the code for each input line
'$host = $1 if /^Host: (\S+)/ # If the line starts with "Host: ",
# save the next non-whitespace string
while( m,(\d+)/open,g ) { # Go through all matches of '<digits>/open'
# on the line, catching the digits
print "$host\t$1\n" # Print the saved hostname and the matched digits.
}'