С перловым хэшем массивов:
$ perl -alne '
push @{ $h{$F[0]} }, $_
}{
for $k (sort keys %h) {
@a = @{ $h{$k} };
print join "\n", @a, "" if $#a > 0
}
' file.txt
542ed609dfc4d0cae44c4b7be6d66382 mba.txt
542ed609dfc4d0cae44c4b7be6d66382 tyrion final.txt
5ee434a2ebcf4c3c98ee07e9c1efddc0 foo.txt
5ee434a2ebcf4c3c98ee07e9c1efddc0 imac.txt
Обратите внимание, что после последней записи печатается пустая строка. sort
является необязательным.
Аналогичная вещь в GNU awk:
gawk '
{a[$1][NR] = $0}
END {
for(k in a){
if(length(a[k]) > 1) {
for(v in a[k]) print a[k][v];
print "";
}
}
}
' file.txt