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