-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 > Boa noite pessoal! > > A missão agora é ordenar a uma base de dados usando como referencia o > valor de um campo em especifico no caso esse campo é o 6° separado por > ";" e contém endereços IPs de uma mesma rede. > O formato da base é o seguinte: > nome;mac;local;so;gw;ip;status;comentario; > > O exemplo da base e o comando que usei para solucionar está em > http://pastebin.com/xX70UNC7
Essas crianças crescem TÃO rápido ! Parabéns por usar o paste-bin para mostrar seus códigos. Sua solução, embora elegante, não serve para todos os casos. Se você tiver em sua lista IPs do tipo 8.7.6.5 10.2.50.51 10.11.42.67 10.101.2.137 10.20.250.255 a lista aparecerá ordenada exatamente como está acima, e isso está errado. Pela lógica, 10.20.250.255 está numa rede anterior a 10.101.2.137. A melhor (se não for a única) maneira de se ordenar IPs é transformando-os em inteiros longos. Um endereço IP é um número de 32 bits. Ele é geralmente escrito na notação "dotted quad": w.x.y.z. Cada parte do IP é ela vezes 256 numa potência N, onde N é a posição da parte, começando da direita para a esquerda em 0. Então, temos (w * 256^3), (x * 256^2), (y * 256^1) e (z * 256^0). Somando os resultados dessas potenciações e multiplicações, você tem um inteiro longo representando o IP. Facilitando sua vida, para converter um IP para a base 10, corte cada octeto e calcule-os assim: w * 16777216 + x * 65536 + y * 256 + z. Gere esse campo, ordene por ele e elimine-o da listagem. Você vai precisar de mais algumas linhas de código, mas pelo menos os resultados saem corretos. Acho que o código em http://pastebin.com/wV6S7a9p faz o truque. A listagem que usei para testes está junto, como comentário no script - -- Um abraço .0. MrBiTs - mrbits....@gmail.com ..0 GnuPG - http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB 000 http://www.mrbits.com.br -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQEcBAEBCAAGBQJL69nVAAoJEG7IGPwrPKWrFr0H/Rg8u8WFvStFs2TLZV2h1U0Y 8TPERPifa9cLS/gJHjo291Iwu+qoBPkkQzCOObJGyIg+Nf/ghlF7RhZxB95AX+Gr 9RF45Gd0zEVIRVlc+E7929XyFWcnGb7c4bSy/vAIM8TYgM5r7e7u7SCsrz7uqAk6 6EUtlG7TD6s7uOsKBZNIGi4qXPZC7nBaTKGITuH5EeODgwM/a6cW+6zAk5fbtLwJ dwrVwB50223XZCgqOd/22o4V8Q2z0qTHjY7lWuCewnL8meFi9LagltvAFLE+Nbf1 rsUxiR2wa3dhzUSRBUZ05pXv/cQupkPpcf4XgU7ZjmfIgPkX7b1EZGSrRfo3GNA= =cyEN -----END PGP SIGNATURE-----