The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX & avançada para usuários experientes
.
google unix.com



UNIX & avançada para usuários experientes Especialista-a-Expert. Saiba avançado UNIX, comandos UNIX, Linux, Sistemas Operativos, Administração de Sistemas, Programação, Shell, shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Remover as linhas duplicadas em arquivos log karthikn7974 Programação Shell Script e 4 03-21-2009 06:41
Remove as linhas duplicadas do Ficheiro Steve Nysif UNIX para Dummies Perguntas & Respostas 18 09-09-2007 09:57
como remover as linhas duplicadas fredao Programação Shell Script e 3 12-13-2006 12:51
Remove as linhas duplicadas no arquivo O Tiack Ein Programação Shell Script e 5 01-12-2006 08:30
reconstruindo um registro em uma ordem diferente r1500 UNIX para Dummies Perguntas & Respostas 1 10-16-2003 06:24

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 08-02-2008
abhi.roy03 abhi.roy03 is offline
Usuário
  
 

Join Date: Aug 2008
Posts: 1
Como remover as linhas duplicadas de um registro sem alterar a ordem

Oi tudo,
Eu tenho que remove as linhas duplicadas em um arquivo sem chainging o order.for por exemplo, se eu tiver um registro

PQR
def
abc
lmn
PQR
abc
mkh
hgf


a saída deve ser
PQR
def
abc
lmn
mkh
hgf

Plz me.It ajudar é urgente

Abhishek
  #2 (permalink)  
Old 08-02-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
viciado
  
 

Join Date: Jan 2007
Localização: Варна, България / Milano, Italia
Mensagens: 2.926
Será esta uma casa?
Tente pesquisar nos fóruns.
  #3 (permalink)  
Old 08-02-2008
temível redoubtable is offline
Usuário
  
 

Join Date: Aug 2008
Localização: Portugal
Lugares: 242

Código:
#!/usr/bin/perl -w

while (<STDIN>)
{
        push (@lines, $_);
}

print "-\n";

foreach my $i (@lines)
{
        if (scalar (grep { /$i/ } @lines) == 1)
        {
                print $i;
        }
}

Uso:

Código:
Tsunami repeated_lines # perl repeat.pl 
pqr
def
abc
lmn
pqr
abc
mkh
hgf
-
def
lmn
mkh
hgf
Tsunami repeated_lines #

Ctrl Para parar a entrada, basta bater-D eo script vai lhe dar todas as não-seqüências repetidas na ordem de entrada.

Você também pode fazer algo assim:


Código:
Tsunami repeated_lines # cat lines |perl repeat.pl 
-
def
lmn
mkh
hgf
Tsunami repeated_lines # cat lines 
pqr
def
abc
lmn
pqr
abc
mkh
hgf
Tsunami repeated_lines #

  #4 (permalink)  
Old 08-02-2008
fpmurphy's Avatar
fpmurphy fpmurphy is online now Forum Staff  
Moderador
  
 

Join Data: dezembro 2003
Localização: Florida
Posts: 1.945
Usando o awk ...

Código:
$ awk '! a[$0]++' file
pqr
def
abc
lmn
mkh
hgf
$

  #5 (permalink)  
Old 08-02-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
viciado
  
 

Join Date: Jan 2007
Localização: Варна, България / Milano, Italia
Mensagens: 2.926
Como eu disse,
você só precisa pesquisar no fórum para encontrar as soluções a seguir:



Código:
awk '!_[$0]++' input


Código:
perl -ne'print unless $_{$_}++' input

ou:


Código:
perl -ne'$_{$_}++||print' input

  #6 (permalink)  
Old 08-03-2008
era era is offline Forum Advisor  
Herder do Inútil Gatos (On Sabático)
  
 

Join Date: Mar 2008
Localização: / lá / é / só / bin / sh
Posts: 3.652
Se a exigência é a de manter o último lugar da primeira ocorrência, é apenas ligeiramente mais difícil.


Código:
perl -ne '$n{$_} = $.; END { print sort { $n{$a} <=> $n{$b} } keys %n }'

Se a última linha falta uma nova linha, que vai contar como uma linha única. Não é terrivelmente difícil de corrigir, mas eu não queria complicar o roteiro.
  #7 (permalink)  
Old 08-03-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
viciado
  
 

Join Date: Jan 2007
Localização: Варна, България / Milano, Italia
Mensagens: 2.926
Citação:
Se a exigência é a de manter o último lugar da primeira ocorrência
[...]
Com GNU Awk:


Código:
awk 'END { for (k in r) t[sprintf("%10d", r[k])] = k
  n = asorti(t, _)
  while (++i <= n) print t[_[i]] }
{ r[$0] = NR }' filename

Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 12:08.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0