Aqui está awk solution (suponho que a ordem de saída não seja importante).
awk '!seen[$1]{ seen[$1]=$0; next } $2!=""{ seen[$1]=$0 }
END{ for (x in seen) print seen[x] }' infile
Aqui, definimos uma matriz associada denominada seen e $1 como índice chave dessa; Por isso, estamos verificando a chave da primeira coluna, que são os IPs que não existem na matriz !seen[$1] , em seguida, adicionamos a linha inteira $0 ao valor dessa chave e lemos next line; caso contrário (onde IP já foi visto antes e existe em array) se a próxima linha tiver o mesmo IP e tiver o nome do host, atualize o valor dessa chave com o valor da linha atual.
No final, estamos fazendo o loop da matriz vista com a variável x como referência aos índices da matriz e imprimimos os valores dessas chaves.