Sem querer extender a *thread... Mais desde quando *"Os nomes de variáveis no código fonte do kernel são escritos, por padrão, em caixa baixa" export....
Em 3 de maio de 2010 21:18, MrBiTs <mrbits....@gmail.com> escreveu: > > > -----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 - mrbits....@gmail.com <mrbits.dcf%40gmail.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.9 (GNU/Linux) > > iQEcBAEBCAAGBQJL32e6AAoJEG7IGPwrPKWrJh8H/3N8mHura6s6iI9UmBqJjUyN > MA8IfJvA7hvPlZxn3e5Yg3zGV9hYbnK7stMFDR7h4dYlY6L0XE7SH3QdzXNC2Ow4 > //HUQklX0YvlaaLpnHk9+SOffjRFRGKLbXNF0lx81qqfUr+Z9HNrhEmo8ORbwo+j > Uy6daAuabUqGqsljyD4y1Gu0Y0RKAB+7QfnkFh1Wtns9P/wtNSk4aeYXdXLfTDlY > XkUds9LmaAySXffmzUOQGP89oIWEXd0jPE7qwrHpMn6mswxrOTA57ZxUj2ZaVW1x > Uke4geFYEw/66SvhJ/Uwwm4AFgMKmjz+6iYTOuIcb75PcdW23JuBWFyq2OFs398= > =RzWQ > -----END PGP SIGNATURE----- > > [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