Однострочный Perl для value-al-{keddka, aljdf;, dkdl;a}
вывода:
$ perl -F- -lanE 'push @{$vals{$F[0]}{$F[1]}}, $F[2];
END { $"=","; while (($v1,$h1) = each %vals) { while (($v2, $v3) = each %$h1) { say "$v1-$v2-{@$v3}" }}}' input.txt
Или с использованием GNU datamash и sed для того же вывода:
$ datamash -Ws -t- groupby 1,2 collapse 3 < input.txt | sed -E 's/^([^-]+-[^-]+-)(.*)/\1{\2}/'
Или дляvalue-al-*
вывод:
$ cut -d- -f1,2 input.txt | sort -u | sed -e 's/$/-*/'