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

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

Re: [shell-script] Re: Trabalhando com arquivos grandes


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Re: Trabalhando com arquivos grandes
Date: Wed, 26 Oct 2005 11:58:29 -0200

Ué, qual o problema ?
 Cria uma variavel $arquivo = "o nome do log" e quando estiver dentro das
tuas condições, troca o nome do arquivo antes do print $0 >> $arquivo
 Não to captando a tua dificuldade...
 Em 26/10/05, rikekuda <address@hidden> escreveu:
>
> É 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>
> > > > <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]
>
>
>
>
> ---------------------------------------------------------------------
> 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]