[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problema com arquivo grande
From: |
Leogildo |
Subject: |
Re: Problema com arquivo grande |
Date: |
Thu, 13 Oct 2005 23:15:46 -0000 |
User-agent: |
eGroups-EW/0.82 |
Ae Marco,
Se o "registro inteiro" for equivalente a uma ocorrência, vc pode
utilizar:
sort nome_do_arquivo | uniq > nome_novo
ou...
sort -u nome_do_arquivo > nome_novo
...agora, se a ocorrência for identificada apenas por parte do
registro (estou me baseando no seu "cut -c 13-16"), vc pode utilizar
(após ordenar o ARQVAL, possivelmente pela chave da ocorrência):
awk -v prev="" 'substr($0, 13, 4) != prev {print; prev = substr($0,
13, 4) }' ARQVAL > ARQVAL.new
Já ouvi comentários que destacam -- dentre outras qualidades -- a boa
performance do awk para manipulação de grandes volumes de dados,
embora eu pessoalmente nunca o tenha utilizado para esta finalidade.
Pela linha de código que estou postando, nota-se que não tenho muita
familiaridade com a sintaxe do awk (não consegui atribuir a uma
variável o resultado do comando substr, o que simplificaria o
código), mas posso afirmar que o mesmo é funcional (testei antes de
postar).
Caso vc já tenha encontrado a solução para o seu problema, ainda
assim valeu o esforço de todos nós, pois shell-script sempre consegue
nos surpreender pelas suas múltiplas possibilidades de resolução de
um mesmo problema.
Só mais uma coisa, se vc testar a solução acima, faça um comparativo
nos tempos de execução, e poste o resultado para a gente saber.
T+
--- Em address@hidden, Marco Sinhoreli
<msinhore@g...> 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
Re: [shell-script] Problema com arquivo grande, Roberto Alves, 2005/10/17