$ echo "/dir1/dir2/dir3<x>/dir4<x>/dir5<x>" | sed -E "s/<x>(\/[^\/]+)$/Before_last_dir\1/g"
/dir1/dir2/dir3<x>/dir4Before_last_dir/dir5<x>
(- E означает, что sed использует расширенные регулярные выражения POSIX)
В качестве альтернативы, без -E (так как -E может быть недоступно в некоторых системах):
$ echo "/dir1/dir2/dir3<x>/dir4<x>/dir5<x>" | sed "s/<x>\(\/[^\/]\{1,\}\)$/Before_last_dir\1/"
/dir1/dir2/dir3<x>/dir4Before_last_dir/dir5<x>
Это должно работать везде. (РЕДАКТИРОВАТЬ: изменил оператор "+" на POSIX "{1,}", поскольку "+" является расширением GNU, а не в POSIX.