[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Comando para eliminar duplicatas não sequenciais
From: |
Tiago Peczenyj |
Subject: |
Re: [shell-script] Comando para eliminar duplicatas não sequenciais |
Date: |
Thu, 12 Nov 2009 10:15:30 -0200 |
Muito pertinente essa duvida: existem varias formas de conseguir o que vc
quer sem apelar para algoritmos iterativos, loops, etc, apenas com bash
'puro' e pipes - e alguma criatividade.
O que vc quer ja existe no funçõesZZ [ http://funcoeszz.net/ ] do Aurelio &
Thobias sob o nome de zzuniq e vou disponibilizar o codigo tal qual vc
encontra no site
# As linhas do arquivo são numeradas para guardar a ordem original
cat -n "${1:--}" | # Numera as linhas do arquivo
sort -k2 -u | # Ordena e remove duplos, ignorando a numeração
sort -n | # Restaura a ordem original
cut -f2- # Remove a numeração
o ${1:--} é para ler tanto da stdin quanto de um arquivo.
No mesmo fonte vc encontra este comentario:
# Versão SED, mais lenta para arquivos grandes, mas só precisa do SED
# PATT: LINHA ATUAL \n LINHA-1 \n LINHA-2 \n ... \n LINHA #1 \n
# sed "G ; /^\([^\n]*\)\n\([^\n]*\n\)*\1\n/d ; h ; s/\n.*//" $1
Boa sorte com o debug :)
2009/11/11 Marcio Gil <address@hidden>
>
>
> Pessoal, quero saber se existe algum comando equivalente ao 'uniq'
> mas que possa eliminar duplicatas não sequenciais. Exemplo:
>
> ddeeff
> aabbcc
> aabbcc
> gghhii
> gghhii
> aabbcc
>
> com 'cat ... | uniq' fica:
>
> ddeeff
> aabbcc
> gghhii
> aabbcc
>
> com 'cat ... | sort -u' fica:
>
> aabbcc
> ddeeff
> gghhii
>
> Mas quero obter somente a primeira ocorrência de cada linha, na
> ordem em que elas ocorrem:
>
> ddeeff
> aabbcc
> gghhii
>
> Há muito tempo eu escrevi um código pra fazer isso ( que chamei de
> 'first': http://c.pastebin.com/f69cecb13 ), mas gostaria de saber se
> existe alguma maneira de resolver com shel-script padrão.
>
> Obrigado.
>
> Marcio Gil.
>
>
>
--
Tiago B. Peczenyj
Linux User #405772
http://pacman.blog.br
[As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Comando para eliminar duplicatas não sequenciais,
Tiago Peczenyj <=
Re: Comando para eliminar duplicatas não sequenciais, Sérgio, 2009/11/13