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

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

Re: [shell-script] Problema com arquivo grande


From: Marco Sinhoreli
Subject: Re: [shell-script] Problema com arquivo grande
Date: Fri, 14 Oct 2005 10:02:39 -0300

Galera,

Valeu pela força de todos vocês. Sinto que agora consigo fazer o
processo com maior rapidez.

Abraços a todos

Em 13/10/05, Tiago Barcellos Peczenyj<address@hidden> escreveu:
>  Ola
>
>  Veja se este script não ajuda :
>
>  head -1 arquivo > lines
>  cat arquivo | while read LINHA
>  do grep -q $LINHA lines || echo $LINHA >> lines
>  done
>
>  a partir de uma semente "a primeira linha" ele procura no arquivo
>  lines se existe cada linha no arquivo e, caso contrario, adiciona a
>  linha no final.
>
>  vc tem um arquivo lines com todas as linhas não repetidas (espero)
>
>  Não sei se não é mais demorado do que a forma que estás fazendo, mas
>  fica a dica.
>
>  Em 13/10/05, Luiz Henrique<address@hidden> escreveu:
>
>  >  Acho que assim funicionaria melhor :-)
>  >
>  >
>  >  cont =1
>  >  e=1
>  >  while [ $e -gt 0 ]
>  >  do
>  >
>  >  i=$(sed -n "$cont"p ARQVAL | cut -c-13)
>  >
>  >  if [ ! $(echo ${var[@]}| grep $i) ];
>  >          then
>  >          var[$cont]=$i
>  >          let cont++
>  >      fi
>  >
>  >  e=$(sed -n "$i"p $1 |wc -c)        # Identifica o tipo da linha
>  >
>  >  done
>  >
>  >
>  >
>  >  Luiz Henrique escreveu:
>  >
>  >  >Da uma olhada no awk que ele faz um trabalho legal com arquivos
>  >  >
>  >  >ou da uma olhada se funciona assim:
>  >  >repare o uso do "sed"
>  >  >
>  >  >#! /bin/bash
>  >  >
>  >  >cont=1
>  >  >for i in $(sed -n "$cont"p ARQVAL | cut -c-13)
>  >  >    do
>  >  >    if [ ! $(echo ${var[@]}| grep $i) ];
>  >  >        then
>  >  >        var[$cont]=$i
>  >  >        let cont++
>  >  >    fi
>  >  >done
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >Marco Sinhoreli escreveu:
>  >  >
>  >  >
>  >  >
>  >  >>Olá a todos,
>  >  >>
>  >  >>Tenho um arquivo com, pra ser exato ;-), 6.352.886 linhas.
>  >  >>Preciso listar as ocorrências considerando que as repetidas não irei
>  >  >>armazenar novamente:
>  >  >>
>  >  >>
>  >  >>#! /bin/bash
>  >  >>
>  >  >>cont=0
>  >  >>for i in $(cut -c 13-16 ARQVAL)
>  >  >>   do
>  >  >>   if [ ! $(echo ${var[@]}| grep $i) ];
>  >  >>       then
>  >  >>       var[$cont]=$i
>  >  >>       let cont++
>  >  >>   fi
>  >  >>done
>  >  >>echo ${var[@]}
>  >  >>
>  >  >>Problema: no ínicio do laço, o i/o fica grande para a leitura do
>  >  >>arquivo gigante (231M) e o processo não vai adiante.
>  >  >>
>  >  >>Gostaria de ver a possíbilidade de ler linha a linha sem necessidade
>  >  >>de armazenamento prévio, é possível?
>  >  >>
>  >  >>[]s
>  >  >>
>  >  >>
>  >  >>--
>  >  >>Marco Sinhoreli
>  >  >>
>  >  >>
>  >
> >>---------------------------------------------------------------------
>  >  >>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
>  >
> >>---------------------------------------------------------------------
>  >  >>
>  >  >>Links do Yahoo! Grupos
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >>
>  >  >
>  >  >
>  >  >
>  >
> >---------------------------------------------------------------------
>  >  >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
>  >
> >---------------------------------------------------------------------
>  >  >
>  >  >Links do Yahoo! Grupos
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >  >
>  >
>  >
>  >
>  >
>  >
> ---------------------------------------------------------------------
>  >  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
>  >
>  > O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
>  > Yahoo!.
>
>
>
> ---------------------------------------------------------------------
>  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
>
> O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> Yahoo!.


--
Marco Sinhoreli


reply via email to

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