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

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

Re: [shell-script] Re: Qual a forma mais eficiente para recuperar campos


From: Lawrence Waclawiak
Subject: Re: [shell-script] Re: Qual a forma mais eficiente para recuperar campos de um arquivo de texto?
Date: Mon, 03 May 2010 21:10:39 -0300
User-agent: Thunderbird 2.0.0.23 (X11/20090817)

Boa noite Cristiano.

Pensar em usar eu havia pensado, porém a forma que conhecia para usar o while para ler um arquivo linha a linha era algo lusitano. Não sabia que o while tinha a facilidade de por si só ler o arquivo linha a linha, para isso eu criava um contador(COUNT) e com o comando "LINE=$(awk NR==$COUNT arquivo)" capturava cada linha para depois com o cut recuperar os campos.

A solução do MrBits foi praticamente igual a sua mas o que realmente fez o ganho astronômico de desempenho foi a sacada dele de escrever tudo de uma só vês no arquivo de saída.

O grep eu sabia dessa facilidade, mas acabei escrevendo usando o cat | por costume de quando eu ainda não sabia, vou cuidar para não faze-lo mais.

Sobre as variáveis agora eu fiquei na dúvida pois eu sempre as usava em caixa alta, até que fiz o Curso de Shell com o Júlio e ele indicou que deveríamos usar capitalizadas pois as variáveis de ambiente são por default em caixa alta.

Fiz alguns testes e constatei que não existe perigo de eu alterar uma variável de ambiente de dentro de um script apenas atribuindo valores a ela, ela só realmente muda o valor da variável de ambiente se eu usar o export $VAR, porém se eu tentar ler uma variável que ainda não tenha algum valor atribuído e que possua o mesmo nome da uma variável de ambiante, eu receberei o valor dessa variável de ambiente, também, depois de atribuir um valor a uma variável com o mesmo nome de uma variável de ambiente eu não posso mais recuperar o valor da variável de ambiente.
Que confusão...
Bom, concordo 100% que é muito melhor para visualizar no código as variáveis em caixa alta, então será que uma melhor opção não seria usar as variáveis em caixa alta mas com um _ no início? tipo $_USER $_NAME $_STATUS ?

Acho que assim uniria o útil ao agradável.

Muito obrigado pela sua atenção.

Abraços,
Lawrence Waclawiak


Cristiano escreveu:

--- Em address@hidden <mailto:shell-script%40yahoogrupos.com.br>, Lawrence Waclawiak <lawrencebbw@...> escreveu
>
> Tudo funciona corretamente porém a maquina demora um pouco para
> processar toda a lista e montar o dhcpd.conf, gostaria de saber se
> alguém conhece uma forma mais eficiente de recuperar o valor desses
> campos que não seja o que eu utilizei nem o awk -F';' '{print $x}' pois
> esse é mais pesado ainda.

Já pensou em usar o while?

http://pastebin.com/8Xdf5j9F <http://pastebin.com/8Xdf5j9F>

2 Dicas que você não pediu, se me permite:

a) O grep tem capacidade de ler o conteúdo dos arquivos. Portanto, você não precisa de um pipe para pesquisar regex dentro de arquivos textos, como fez em na linha 43 do script (vide "cat $Database|egrep -v '^#'"). Basta indicar o nome do arquivo após o padrão da regex, como fiz na sugestão.

b) Já pensou em usar nome de variáveis em caixa alta? IHMO, nomes de variáveis capitalizados são muito ruins de se escrever (perde-se muito tempo combinando shift+tecla), além de ruins de se ler no meio do código e pode causar muitos bug por erro de digitação. Mas esta é minha opinião. Quer um argumento técnico? Os nomes de variáveis no código fonte do kernel são escritos, por padrão, em caixa baixa. Então, se você resolver usar caixa baixa também, coisas muito ruins podem acontecer.... ;-)






reply via email to

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