awk to remove last two -*-*

fq-bar-something-1.0-r1.src.rpm  ----> fq-bar-something
fq-bar-xx-r1-rel.src.rpm   ---------> fq-bar-xx
fq-bar-ff-ver-11-rel.src.rpm   -------> fq-bar-ff-ver

any help?

cat filename | awk -F '-' '{$NF=""; $(NF-1)=""; print }' | sed 's/ /-/g' | sed 's/--$//g'

Please next time seperate input and expected output in two different CODEQOUTE

That doesn't get what I want. please see my expected ouput

 cat filename | awk -F '-' '{$NF=""; $(NF-1)=""; print }' | sed 's/ /-/g' | sed 's/--$//g'

Please next time seperate input and expected output in two different CODEQOUTE

Try:

awk 'NF-=2{$1=$1}1' FS=- OFS=- file
sed 's/-[^-]*-[^-]*$//' file

I had wanted to offer sth like

$ awk -F '-' '{for (i=1;i<NF-2;i++) printf "%s-", $i; printf "%s\n", $(i) }' file

but scutinizer's proposals beat them all!