As far as I know, sed does not support non-greedy matching, so not using the same approach, but if you have two seds chained together, it can usually* be converted to a single sed:
Code:
sed -ne 's/\([A-Z]*-TP_[A-Z]*\).*/ \1/' -e 's/.*[^A-Z]\([A-Z]-TP_\)/\1/p'
* Theoretically it can always be converted, but sometimes the resulting sed script may be quite complicated and not worth it.