Alternativa preferida
Poderíamos simplesmente modificar a consulta do rpm para enviar apenas o nome.
rpm -qa --queryformat "%{NAME}\n"
Ou podemos nos sujar com um regex
Não exatamente "direto", mas aqui está um regex sed que deve ser capaz de fazê-lo.
sed -e 's/\([^\.]*\).*//;s/-[0-9]*$//' <<< "perl-Text-ParseWords-3.30-1.fc22.i686"
Isso deve tratar de tudo, exceto que há um ponto no nome do pacote (nem acho que isso é permitido).
Análise rápida
-
s/\([^\.]*\).*//
agarra tudo antes do primeiro período. Então,perl-Text-ParseWords-3.30-1.fc22.i686
se tornaperl-Text-ParseWords-3
-
s/-[0-9]*$//
livra-se desse% de-
inicial e do primeiro dígito da versão. Então,perl-Text-ParseWords-3
se tornaperl-Text-ParseWords
.