Sed - Mettre la première lettre de chaque mot en majuscule
baissaoui
Messages postés
508
Date d'inscription
Statut
Webmaster
Dernière intervention
-
Document initial créé par Jipicy
Voici deux façons de procéder :
Exemples :
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.
Capitaliser la 1ère lettre de chaque mot

- Méthode 1
sed -r 's/(^.| .)/\U&/g'
- Méthode 2
sed 's/^.\| [a-z]/\U&/g'
- Méthode 3
sed -r 's/\<./\U&/g'
Exemples :
$ 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.
sed -r 's/(^.|[ ]+.)/\U&/g'