shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Ordenar base por campo


From: Lawrence Waclawiak
Subject: Re: [shell-script] Ordenar base por campo
Date: Thu, 13 May 2010 17:20:08 -0300
User-agent: Thunderbird 2.0.0.23 (X11/20090817)

Boa tarde MrBits.



Antes de mais nada quero agradecer pela sua ajuda, esta me ajudando muito a descobrir novas formas de fazer as coisas.

Júlio, Desenvolvi mais duas formas de ordenar a base e fiz testes com uma base de 1000 linhas, usei a sacada do sort -t, mas não é possivel(acho) usar num só comando dois separadores, dessa forma não consegui selecionar o campo ip usando ";" e depois sortear o ip usando ".", tive de fazer diferente, veja os resultados.

Todos os comandos e codigos encontram-se com a formatação preservada aki: http://pastebin.com/RjHWZbR8

Solução MrBits(teu script tá dentro desse "teste")
[root@ProxyP15 dhcp]# time ./teste > /dev/null

real    0m0.220s
user    0m0.186s
sys     0m0.039s


# Solução com sed + sort + cut
[root@ProxyP15 dhcp]# time sed -r 's/^(.*;.*;.*;.*;.*;)(.*;)(.*;.*;)/\2\1\2\3/g' Rede50.adm.db |sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4 |cut -d";" -f2- > /dev/null

real    0m0.213s
user    0m0.213s
sys     0m0.005s

# Solução com awk + sort + cut
[root@ProxyP15 dhcp]# time awk -F ';' '{print $6";"$1";"$2";"$3";"$4";"$5";"$6";"$7";"$8";"}' Rede50.adm.db |sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4 |cut -d";" -f2- > /dev/null

real    0m0.172s
user    0m0.172s
sys     0m0.007s

A mais eficiente foi a com o awk, eu pensava que ele era mais pesado, mas se mostrou melhor.

Essa forma de usar o sort também garante a correta ordenação dos ips, usei teus(MrBits) ips de exemplo veja:

[root@ProxyP15 dhcp]# time awk -F ';' '{print $6";"$1";"$2";"$3";"$4";"$5";"$6";"$7";"$8";"}' base2 |sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4 |cut -d";" -f2-
aguirre-wifi;00:1A:73:31:08:f0;TMK;Win_Vista;;8.7.6.5;Ativo;;
aguirre-lan;00:16:d3:95:e0:ab;TMK;Win_Vista;;10.2.50.51;Ativo;;
lawrence-wifi;00:1e:4c:91:df:36;TI;Linux;;10.11.42.67;Ativo;;
barbosa-wifi;70:1A:04:88:28:27;TI;Windows_Vista;;10.20.250.255;Ativo;;
lawrence-lan;00:1b:38:e7:49:90;TI;Linux;;10.101.2.137;Ativo;;

Muito obrigado,
Lawrence Waclawiak


MrBiTs escreveu:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Corrigindo meu último e-mail, a listagem com os IPs de exemplo encontra-se em
http://pastebin.com/qMJ43jDZ

- --

Um abraço

.0. MrBiTs - address@hidden <mailto:mrbits.dcf%40gmail.com>
..0 GnuPG - http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB <http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB>
000 http://www.mrbits.com.br





reply via email to

[Prev in Thread] Current Thread [Next in Thread]