Ten váš regexp je trochu zvláštní. Na pohled v něm nevidím nic, co by mělo vadit, ale rozhodně bych to zapsal jinak:
echo "this is Sparta" | sed 's/^.*\(.\)$/\1/'
Ukotvil bych výraz k začátku (to by nemělo být potřeba, protože RE jsou hladové a .*
by měla sežrat všechno od začátku řetězce, ale proč riskovat), vyhodil bych závorky kolem té části, kterou nepotřebuju (když ji nechci vytahovat, tak nepotřebuju závorky) a vyhodil bych $
až za závorku. Co jsem si zkoušel váš kód, tak to zahrnutí stringu do závorky je příčinou, proč vám to na Solarisu nefunguje správně, ale důvod neznám - z hlediska regexpů v tom není rozdíl, ale třeba je to nějaká chyba v Solarisím sedu.