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.i686se 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-3se tornaperl-Text-ParseWords.