[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: problema para abrir arquivo para filtragem em awk
From: |
edmarssouza |
Subject: |
Re: problema para abrir arquivo para filtragem em awk |
Date: |
Fri, 23 Jan 2009 14:01:21 -0000 |
User-agent: |
eGroups-EW/0.82 |
--- Em address@hidden, jimmy <ronaldo_tgz@...>
escreveu
>
> On Thu, Jan 22, 2009 at 08:40:34PM -0000, edmarssouza wrote:
> > Ei ai pessoal, tudo bem?
> > Espero que sim.
> > Estou com um problema e peço a contribuição de todos na medida do
> > possível.
> > É o seguinte, estou começando a programar em awk, sei que a lista
não
> > serve
> > a esse fim, mais sei que vocês são humilde para entender uma
> > dificuldade.
> > O problema é o seguinte, no shell eu usava a simples sintaxe para
> > filtrar o
> > /proc/meminfo:
> >
> > awk 'BEGIN {FS=":"} /MemTotal/ {print $2}' /proc/meminfo
> > e
> > awk 'BEGIN {FS=":"} /model name/ {print $2}' /proc/cpuinfo
> >
> > só que como estou querendo programar apartir de um arquivo awk
sem
> > usar o shell,
> > não estou conseguindo usar o awk para ler esses arquivos. Sei que
tem
> > um
> > jeito com um tal de getline. A pergunta é: O que é o getline no
awk e
> > como
> > usá-lo para filtrar os dois arquivos acima, de dentro de um
script
> > awk, sem
> > usar a função system()?
> >
> > Desde já meu muito obrigado pela atenção de todos, ai julio se
> > possivel contribui
> > ai, pois sei que de awk e shell você é fera. Obrigado pessoal,
até
> > mais.
> >
> > Obs: Eu li o manual do gawk mais meu inglês não é dos melhores,
assim
> > sendo
> > não pude tira muito proveito.
> >
> >
> > ------------------------------------
>
> saudações edmar,
>
> sem usar o shell em momento algum dentro do script a única forma que
> conheço é a seguinte:
>
> #!/usr/bin/awk -f
>
> BEGIN {
> while((getline line < "/proc/meminfo") > 0) {
> if(line ~ /MemTotal/) {
> split(line,l,/ +/);
> print l[2],l[3]
> }
> }
> }
>
> na linha do "getline", o while irá armazenar cada linha do arquivo
> "/proc/meminfo" dentro da variável "line" enquanto o retorno da
função
> for maior que zero, ou seja, enquanto ele puder ler o arquivo.
>
> espero que esse simples script lhe sirva de exemplo.
>
> uma observação é que estou usando o gnu awk (gawk), e como há várias
> implementações diferentes dessa linguagem, não sei se esse código
> funcionaria em outro interpretador.
>
E ai jimmy meu velho, obrigadão era isso mesmo, esse getline está me
dando uma surra. Tava difícil. E é um bom exemplo sim, é uma
catastrofe encontra apostila, artigo ou tutorial de awk em português.
Espero que algum dia eu possa retribui o favor. Agradeço mesmo de
coração. Vou testar aqui filtrando os dois ou mais arquivos ao mesmo
tempo no script awk...rsrsrs. Valeu. muito obrigado. Até mais!