Usando um perl one-liner:
perl -a -e '$line{$F[0]} = $_ if (length($_) > length($line{$F[0]})) ; END { foreach (sort keys %line) { print $line{$_} } };' STs.csv STt.csv
Ou, em um formulário de script perl autônomo mais fácil de ler:
#! /usr/bin/perl -a
$line{$F[0]} = $_ if (length($_) > length($line{$F[0]})) ;
END {
foreach (sort keys %line) { print $line{$_} }
};
Este é essencialmente o mesmo algoritmo da resposta de Archemar, mas em perl
em vez de awk
. Em termos simples: usando o primeiro campo da entrada como a chave para um array com hash, se a linha atual de entrada for maior que o que nós armazenamos para o array (o padrão é a string vazia em perl) então armazene a linha atual. Depois de lermos todas as entradas (ou seja, acabadas), imprimamos cada elemento do hash.