tente
... | awk '{if ($1 in used ) {
if (used[$1] != "" ) print used[$1] ;
print ;} else used[$1]=$0 ;} '
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
tente
... | awk '{if ($1 in used ) {
if (used[$1] != "" ) print used[$1] ;
print ;} else used[$1]=$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