Fala Law, dá uma olhada na opção -t (se não me engano) do sort (não uso isso há muito tempo e me esqueci, mas acho que é isso mesmo). Vc deverá sortear segundo o 6o campo com separador ';', depois sortear com o 1o, 2o, 3o e 4o campos com separador '.'.
Vc deverá usar tb usar a opção -n para especificar que o sort é numérico. Veja: $ echo '1 > 2 > 10' | sort 1 10 2 $ echo '1 2 10' | sort -n 1 2 10 Abraços, Julio Cursos de Shell e Zenity em 2 fins de semana? - Aracaju turma de Shell em 12/05 - andersonriz...@gmail.com; - DF turma de Shell em 12/06 - ligue (61)3223-3000; - RJ turma de Shell em 14/06 - ligue (21)2210-6061; - Floripa turma de Shell e Zenity 12/07 el...@7seven.com.br; - Turmas fechadas em outras cidades ligue (21)8112-9988. Em 12 de maio de 2010 21:45, Lawrence Waclawiak <lawrence...@yahoo.com.br>escreveu: > > > 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 > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html