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 Primeiro problema, o campo IP não é o primeiro, sendo assim fazer um "sort" não vai adiantar nada Segundo problema, mesmo que o campo ip fosse o primeiro, com o sort eu não consegui organizar endereços ips, tentei com várias opções do man e nada. Por exemplo, se fizer um sort nos seguintes ips: echo "10.10.50.50 10.10.50.6" |sort 10.10.50.50 10.10.50.6 Ele não consegue organizar, independente da flag passada para o sort ( -n -g -d ) A solução que arrumei foi a seguinte: Obs esse comando tbm encontra-se aki com a formatação preservada: http://pastebin.com/xX70UNC7 cat $Database |sed -r 's/(^.*;(([0-9]{1,3}\.){3})([0-9]{1,3});.*$)/\4;\1/' |sort -n |sed -r 's/^[0-9]{1,3};//' Explicando: Eu crio um retrovisor \1 que casa com toda a linha, mas no meio crio outros retrovisores para fatiar o ip e então crio uma nova linha que é igual a original porém começando com um novo campo que contém a ultima casa do endereço ip recureprado com o retrovisor \4, então passo um sort -n e em seguida com o sed removo esse novo campo que havia sido criado. Funcionar funciona, mas achei muito poluída essa minha solução. Alguém sabe um forma mais limpa e eficiente de fazer isso? Grato pela atenção, Lawrence Waclawiak
