dimanche 25 février 2007

Les chaînes de caractères


Les chaînes de caractères

Bash possède de nombreuses fonctionnalités pour manipuler les chaînes de caractères qui ne sont pas aissé à maîtriser.

Longueur d'une chaîne de caractère

Il existe au moins 2 méthodes pour y parvenir.
nom="Paul"
${#nom} #retourne 4

nom="Paul"
echo `expr length $nom` #retourne 4

Si la chaîne contient des espaces, il faut mettre des " au tour de la chaîne de caractère lorsqu'on utilise la deuxième méthodes.

nom="Paul Smith"
echo `expr length "$nom"`  #retourne 10

Il faut faire attention lorsque la chaîne de caractère contient des '. Il faut alors utiliser le \.

message='C'\''est froid dehors'
echo ${#message}  #retourne 18
echo ${message}   #retourne C'est froid dehors

Extraction d'une chaîne de caractère

Bash permet d'extraire une chaîne caractère d'une autres à partir de différente position.
Le première paramètre spécifié indique la position de départ et le second indique la longueur.

message="Il fait froid dehors"
echo ${message:3} # retourne fait froid dehors
echo ${message:8:5} # retourne froid
echo ${message:(-6)} # retourne dehors

Enlever des caractères en début de chaîne

Cette possibilité permet d'enlever les caractères se trouvant en début de chaîne, il faut spécifier la chaîne désirer être enlever. Il est possible d'utiliser l'étoile. Elle signifie n'importe quelle caractère.

message="Il fait froid dehors"
echo ${message#Il}   #fait froid dehors
echo ${message#I*d}   #dehors

Dans le seconde cas, il est spécifié, enlever la chaîne débutant par I et se terminant par d.

Enlever des caractères en fin de chaîne

C'est identique à la fonction précédente, excepté qu'elle commence par la fin de la chaîne

message="Il fait froid dehors"
echo ${message%d*s}   #Il fait froid

Remplacer une chaîne par une autre

Le première paramère est la chaîne de caractère initiale, le deuxième est la valeur recherché et le troisière est la valeur qui remplacera le deuxième paramètre.

message="Il fait froid dehors"
echo ${message/froid/chaud}   #Il fait chaud dehors

Prenez note que si vous voulez replacer toutes les occurences du deuxième paramètre par le troisième, il faut doublez le / du deuxième paramètre.

message="Il fait froid dehors"
echo ${message//froid/chaud}   #Il fait chaud dehors

Nous avons vu les quelques fonctions que Bash propose pour manipuler des chaînes de caractères. Leurs syntaxes varie ce qui rend leur utilisation un peu plus difficile.