#!/usr/bin/perl open F, "bzip2 -dc @ARGV 2>/dev/null | hdlist2groups - |"; foreach () { chop; /(.*):(.*)/; $l{$2}{$1} = undef; } close F or die; foreach (sort keys %l) { print "$_\n"; print "\t$_\n" foreach sort keys %{$l{$_}}; print "\n"; }