Imprime linhas duplicadas com base na primeira coluna

1

Eu quero obter linhas onde a primeira coluna é duplicada (usei o número 32 porque a primeira coluna tem sempre 32 caracteres). Até agora eu descobri:

sort | uniq -d -w 32 filename

O problema é que eu quero as duas linhas, não apenas uma. Por exemplo, de:

283158c7da8c0ada74502794fa8745eb  ubuntu-6.10-alternate-amd64.iso
5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-i386.iso
5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-powerpc.iso

A saída que quero é:

5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-i386.iso
5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-powerpc.iso

Não

5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-i386.iso

Que eu recebo

    
por mony 12.11.2015 / 11:22

2 respostas

3

tente

 ... | awk '{if ($1 in used ) {
               if (used[$1] != "" ) print used[$1] ;
               print ;} else used[$1]=$0 ;} '
    
por 12.11.2015 / 11:44
0

Usando o Perl:

[...] | perl -lane 'grep(@F[1], @x)?print:push(@x, @F[1])'
% cat in
283158c7da8c0ada74502794fa8745eb  ubuntu-6.10-alternate-amd64.iso
5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-i386.iso
5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-powerpc.iso
% cat in | perl -lane 'grep(@F[1], @x)?print:push(@x, @F[1])'
5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-i386.iso
5717dd795bfd74edc2e9e81d37394349  ubuntu-6.10-alternate-powerpc.iso
    
por 12.11.2015 / 11:45