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

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

Re: Trabalhando com arquivos grandes


From: rikekuda
Subject: Re: Trabalhando com arquivos grandes
Date: Wed, 26 Oct 2005 13:47:36 -0000
User-agent: eGroups-EW/0.82

É quase isso...porem isso nao funciona dentro de um arquivo .awk, 
pois tenho que testas vários campos antes de determinar qual será o 
arquivo de destino.

Este é o teste.awk

#!/usr/bin/awk -f
BEGIN { FS="." }
{
   if (( $1 == 10 ) && ( $2 == 20 )) {
      if (( $3 >= 40 ) && ( $3 <= 50 )) 
 {
         print $0
      } 
   }
}

Executo : awk -f teste.awk file.log
Gostaria de colocar outros "if" e com várias saidas como por exemplo
   if (( $1 == 10 ) && ( $2 == 20 )) {
      if (( $3 >= 40 ) && ( $3 <= 50 )) 
     {
         print $0 > naofunciona1.log
      } 
   }
   if (( $1 == 20 ) && ( $2 == 20 )) {
      if (( $3 >= 40 ) && ( $3 <= 50 )) 
     {
         print $0 > naofunciona2.log
      } 
   }


Tem como fazer algo parecido ?


--- Em address@hidden, Tiago Barcellos Peczenyj 
<tiago.peczenyj@g...> escreveu
> não sei se vai funcionar... mas tenta igual :)
>  awk -F: '{print $1 >> $2".log"}' file.log
> 
>  Em 26/10/05, Tiago Barcellos Peczenyj <tiago.peczenyj@g...> 
escreveu:
> >
> > esqueci as notações do awk de cabeça, depois eu converto
> >  experimenta este cara:
> >  cut -d\: -f 2 arquivo | uniq > estados # de repente é mais 
facil fazer
> > isto na mão...
> >  for i in $(cat estados)
> > LOG="${i}.log"
> > do echo "criando $LOG"
> > grep ":${i}:" arquivo | cut -d\: -f1 > $LOG # veja 1
> > echo "feito, $(wc -l $LOG) linhas adicionadas!"
> > done
> > exit 0
> >
> > 1) se vc usar awk, faria awk '/estado_que_vc_quer/{print $1}' 
mas esqueci
> > como dizer que o dois_pontos é o delimitador, no caso vc faria
> > awk '/'$i'/{print $1}' > $LOG
> > 2) acho que echo -n no "criando $LOG" fica mais bonito :)
> >  Era isso
> > Em 26/10/05, rikekuda <rikekuda@y...> escreveu:
> > >
> > > Como fazer com awk ?
> > > Preciso ler o arquivo grande e de acordo com o conteudo preciso
> > > gerar outros arquivos. Por exemplo :
> > > file.log
> > > ricardo:sp:sao paulo
> > > jose:rj:rio de janeiro
> > > pedro:rs:porto alegre
> > >
> > > Agora preciso pegar o valor da 2 coluna e gerar o arquivo 
sp.log,
> > > rj.log, etc...Como fazer isso no awk sem ter que ler o arquivo 
n
> > > vezes ?
> > >
> > >
> > >
> > >
> > > --- Em address@hidden, Tiago Barcellos 
Peczenyj
> > > <tiago.peczenyj@g...> escreveu
> > > > AWK não faz isso de forma mais otimizada, sem estourar a 
ram ?
> > > >
> > > > Em 26/10/05, Rodrigo Monteiro <mrodrigox@g...> escreveu:
> > > > >
> > > > > On 10/26/05, rikekuda <rikekuda@y...> wrote:
> > > > > > Fiz um shell script para ler um arquivo grande de +- 5Gb,
> > > porem nao
> > > > > > consigo executa-lo, pois ele começa a utilizar toda a 
memória
> > > RAM do
> > > > > > servidor de para por "No Space"
> > > > > >
> > > > > > Estou utilizando for i in `cat file.log` do.....
> > > > >
> > > > > Use o while
> > > > >
> > > > > while read LINHA ; do
> > > > > echo $LINHA
> > > > > #faz o que vc quiser aqui
> > > > > done < file.log
> > > > >
> > > > > Com isso creio que vc não irá estourar a ram/swap, porém 
deverá
> > > > > demorar um pouco para completar o laço do while.
> > > > >
> > > > > []s
> > > > >
> > > > >
> > > > > >
> > > > > > Alguma sugestao ?
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > ---------------------------------------------------------
------
> > > ------
> > > > > > 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-
address@hidden
> > > > > > ---------------------------------------------------------
------
> > > ------
> > > > > > Esta lista é moderada de acordo com o previsto em
> > > > > http://www.listas-discussao.cjb.net
> > > > > > ---------------------------------------------------------
------
> > > ------
> > > > > >
> > > > > > Links do Yahoo! Grupos
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > "Free as in Freedom, not free as in free beer"
> > > > > Rodrigo Monteiro
> > > > > mrodrigox@g...
> > > > >
> > > > >
> > > > > -----------------------------------------------------------
------
> > > ----
> > > > > 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: address@hidden
> > > > > -----------------------------------------------------------
------
> > > ----
> > > > > Esta lista é moderada de acordo com o previsto em
> > > > > http://www.listas-discussao.cjb.net
> > > > > -----------------------------------------------------------
------
> > > ----
> > > > >
> > > > >
> > > > >
> > > > > *Yahoo! Grupos, um serviço oferecido por:*
> > > > > ------------------------------
> > > > > *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:
> > > > > address@hidden<shell-script-
> > > address@hidden?subject=Unsubscribe
> > > <http://address@hidden/?subject=Unsubscribe>>
> > > > > - O uso que você faz do Yahoo! Grupos está sujeito aos 
Termos
> > > do
> > > > > Serviço do Yahoo! < http://br.yahoo.com/info/utos.html>.
> > > > >
> > > > >
> > > >
> > > >
> > > > [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: address@hidden
> > > ---------------------------------------------------------------
------
> > > Esta lista é moderada de acordo com o previsto em
> > > http://www.listas-discussao.cjb.net
> > > ---------------------------------------------------------------
------
> > >
> > >
> > >
> > >   *Yahoo! Grupos, um serviço oferecido por:*
> > > ------------------------------
> > > *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:
> > >    address@hidden
> > >    <address@hidden?
subject=Unsubscribe>
> > >    - O uso que você faz do Yahoo! Grupos está sujeito aos 
Termos do
> > >    Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
> > >
> > >
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]



reply via email to

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