Это решение работает, если вам не нужно разбивать слова на заглавные. Например, используя верхний ответ, вы получите:
$ echo 'FAQPage' | sed 's/\([A-Z]\)/ \1/g'
F A Q Page
Но вместо этого с моим решением вы получите:
$ echo 'FAQPage' | sed 's/\([A-Z][^A-Z]\)/ \1/g'
FAQ Page
Примечание: это не работает правильно, когда есть второй экземпляр нескольких прописных слов, например:
$ echo 'FAQPageOneReplacedByFAQPageTwo' | sed 's|\([A-Z][^A-Z]\)| \1|g'
FAQ Page One Replaced ByFAQ Page Two