$ echo -e "bonjour la vie." | sed -r 's/(^.| .)/\U&/g' Bonjour La Vie.
$ echo -e "bonjour la vie\net bonjour à toi" | sed -r 's/(^.| .)/\U&/g' ou $ echo -e "bonjour la vie\net bonjour à toi" | sed -r 's/(\b.)/\U&/g' Bonjour La Vie Et Bonjour À Toi
$ echo -e "bonjour la vie." | sed 's/^.\| [a-z]/\U&/g' Bonjour La Vie.
$ echo -e "bonjour la vie\net bonjour à toi" | sed 's/^.\| [a-z]/\U&/g' Bonjour La Vie Et Bonjour À Toi
$
Note : - les 2 premières méthodes ne fonctionnent que si et seulement il y un seul espace entre les mots.
Voici l'amélioration de la 1ère méthode pour que ça marche sans tenir compte de nombre d'espaces entre les mots.