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: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Problema com arquivo grande
Date: Thu, 13 Oct 2005 16:28:14 -0300

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!.


reply via email to

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