[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Qual a forma mais eficiente para recuperar campos de
From: |
MrBiTs |
Subject: |
Re: [shell-script] Qual a forma mais eficiente para recuperar campos de um arquivo de texto? |
Date: |
Mon, 03 May 2010 21:18:02 -0300 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9pre) Gecko/20100217 Lightning/1.0b1 Shredder/3.0.3pre |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
> MrBits,
> Modifiquei sua sugestão de acordo com meu script e quer saber?
> Nem melhorou tanto assim...... passou de 600ms para 17ms.... um ganho de
> APENAS 3500%
Acredite. Também já passei por isso. Essas armadilhas de usar cat | grep | cut
são clássicas e pegam 11 entre 10 novatos (e outro
tanto de experientes também). As pessoas podem falar que 600ms não é tanto
assim, mas extrapole isso para um arquivo com algumas
dezenas de gigabytes de dados e você terá idéia do que estamos falando.
> corpo(){
> OLDIFS=${IFS}
> IFS=";"
> while read PC MAC LOCAL SO GW IP STATUS COMENT ; do
> [[ $PC =~ ^srv-.*$ ]] && break
> echo " "
> [[ "$COMENT" =~ ^$ ]] || echo " # "$COMENT""
> echo " # $PC ($LOCAL) ($SO) ($STATUS)"
> echo " host $PC {"
> echo " hardware ethernet $MAC;"
> [[ "$IP" =~ ^$ ]] || echo "
> fixed-address $IP;"
> [[ "$GW" =~ ^$ ]] || echo " option
> routers $GW;"
> [[ "$SO" == "Win_2000" ]] && win_2000
> echo " }"
> echo ""
> done < <(grep -v '^#' $Database) >> $DHCPD
> IFS=${OLDIFS}
> }
Que código bonito :P Saiu até formatadinho aqui, com o e-mail recebido em
texto, sem nenhum HTML para encher o saco :P (não
resisti). Ele ia ficar mais bonito ainda se você tivesse colocado todas as
variáveis protegidas pelos {}, mas foi falha minha.
Estavam me torrando o saco no engenho e eu queria responder logo.
> Bom, eu gostaria de entender melhor essa mágica, então vou falar o que
> entendi, usei o "for" pois não sabia que o "while" tinha a facilidade de
> ler o arquivo linha a linha sem usar o IFS para detectar o fim
> dela.(Ainda não tenho total certeza se é exatamente isso, mas pelos
> testes que fiz foi a conclusão que cheguei)
> Dessa forma o while pega cada linha completa e manda para o "read"
> fatiar usando o IFS=";" e já atribuindo cada campo a cada variável na
> lista dele.
> Dentro do while rolam as comparações e são criadas as linhas que farão
> parte do dhcpd.conf.
> Outra coisa que não sabia era da facilidade de poder mandar a saída
> inteira desse while para dentro de um arquivo de uma só vês, da forma
> que vc fez eu imaginava que ele iria imprimir tudo no tty linha a linha,
> percebi também que até funções podem ter sua saída redirecionadas para
> arquivos pois na linha que verifico o S.O se esse for Win_2000 eu chamo
> uma função win_2000 que cria as exceções para esse S.O
> Da minha forma para cada linha da base eu escrevia 8x no arquivo de
> saída e agora escrevo apenas 1x para toda a base, é isso mesmo?
Zero de mágica. Isso é sistema operacional de verdade. E, sim, você está certo.
Antes você escrevia 8x para cada registro, agora
escreve uma vez para a base. Redirecionamento de entrada e saída padrões é
muito poderoso.
- --
Um abraço
.0. MrBiTs - address@hidden
..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.9 (GNU/Linux)
iQEcBAEBCAAGBQJL32e6AAoJEG7IGPwrPKWrJh8H/3N8mHura6s6iI9UmBqJjUyN
MA8IfJvA7hvPlZxn3e5Yg3zGV9hYbnK7stMFDR7h4dYlY6L0XE7SH3QdzXNC2Ow4
//HUQklX0YvlaaLpnHk9+SOffjRFRGKLbXNF0lx81qqfUr+Z9HNrhEmo8ORbwo+j
Uy6daAuabUqGqsljyD4y1Gu0Y0RKAB+7QfnkFh1Wtns9P/wtNSk4aeYXdXLfTDlY
XkUds9LmaAySXffmzUOQGP89oIWEXd0jPE7qwrHpMn6mswxrOTA57ZxUj2ZaVW1x
Uke4geFYEw/66SvhJ/Uwwm4AFgMKmjz+6iYTOuIcb75PcdW23JuBWFyq2OFs398=
=RzWQ
-----END PGP SIGNATURE-----
- Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Lawrence Waclawiak, 2010/05/03
- Re: [shell-script] Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Tiago Peczenyj, 2010/05/03
- Re: [shell-script] Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, MrBiTs, 2010/05/03
- Re: [shell-script] Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Lawrence Waclawiak, 2010/05/03
- Re: [shell-script] Qual a forma mais eficiente para recuperar campos de um arquivo de texto?,
MrBiTs <=
- Re: [shell-script] Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Cristiano Amaral, 2010/05/03
- Re: Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Cristiano, 2010/05/03
- Re: [shell-script] Re: Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Julio C. Neves, 2010/05/03
- Re: [shell-script] Re: Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Bruno Gunter, 2010/05/03
- Re: [shell-script] Re: Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Raul Libório, 2010/05/04
Re: Qual a forma mais eficiente para recuperar campos de um arquivo de texto?, Cristiano, 2010/05/03