Ceci est une ancienne révision du document !
Manipulations des chaînes de caractères
Création — — Nicolas THOREZ 2021/07/22 15:34
Manipulation via une variable
Il est possible de manipuler une chaîne de caractères directement en intervenant sur la variable de la manière suivante :
TEXT="Chaîne"
# Manipulation pour mettre la chaîne de caractères en majuscule
echo ${TEXT^^}
# Retour
CHAÎNE
Le tableau suivant indique les principales manipulations pouvant être appliquées à notre variable $TEXT :
| Manipulation | Explication | Exemple |
|---|---|---|
${#TEXT} | Affiche la taille de la chaîne. | echo ${#TEXT}
6 |
${TEXT^^} | Mise en majuscule. | echo ${TEXT^^}
CHAÎNE |
${TEXT,,} | Mise en minuscule. | echo ${TEXT,,}
chaîne |
${TEXT: +n} | Récupère les n premiers caractères. | echo ${TEXT: +2}
Ch |
${TEXT:: +n} | Supprime les n premiers caractères. | echo ${TEXT:: +2}
aîne |
${TEXT: -n} | Récupère les n derniers caractères. | echo ${TEXT: -2}
ne |
${TEXT:: -n} | Supprime les n derniers caractères. | echo ${TEXT:: -2}
Chaî |
${TEXT:x} | Extraie tous les caractères à partir de l'index x sachant que le premier caractère est le n°0. | echo ${TEXT:2}
aîne |
${TEXT:x:y} | Extraie les y caractères à partir de l'index x sachant que le premier caractère est le n°0. | echo ${TEXT:2:3}
aîn |
${TEXT:x:-y} | Extraie les caractères à partir de l'index x sachant que le premier caractère est le n°0 en supprimant les y derniers caractères. | echo ${TEXT:2:-3}
a |
${TEXT/abc/xyz} | Remplace la première occurrence de abc par xyz. | echo ${TEXT/aî/i}
Chine |
${TEXT//abc/xyz} | Remplace toutes les occurrences de abc par xyz. | TEXT="Toto"
echo ${TEXT//o/i}
Titi |
${TEXT/#abc/xyz} | Remplace abc par xyz si abc correspond aux premiers caractères de la chaîne. | TEXT="anna"
echo ${TEXT/#a/o}
onna |
${TEXT/%abc/xyz} | Remplace abc par xyz si abc correspond aux derniers caractères de la chaîne. | TEXT="anna"
echo ${TEXT/%a/o}
anno |
La commande awk
- Référence : Manuel de la commande awk
awk est un puissant utilitaire permettant la manipulation de texte dans une chaîne de caractère et/ou dans un fichier texte. Avant de commencer à utiliser awk, il faut connaître quelques points importants :
awkmanipule des champs de texte et non des caractères.- Le séparateur de champs par défaut est un espace vide pouvant être un espace simple, multiple, une tabulation et/ou un retour à la ligne.
awkest un interpréteur de commandes. Son utilisation sera toujours de typeawk 'script'.- Chaque champ est défini par le caratère
$et numéroté à partir de 1. Ainsi, le premier champs est$1, le second$2, etc… Le champ$0correspond alors à la ligne complète. - Utilisé pour délimité le script interprété par
awk, Le caractère'ne peux être utilisé directement dans ce dernier. Pour l'utiliser, il on peux utilisé la chaîne"'"'"'"ou bien"\047".
Quelques commandes de awk :
| Manipulation | Syntaxe et exemple |
|---|---|
| Afficher le 2ème champ. | echo "a b c d" | awk '{print $2}'
b |
| Afficher les 2èmes et 4èmes champs. Attention : Les champs sont ainsi affichés sans séparateur de champs. | echo "a b c d" | awk '{print $2 $3}'
bd |
| Afficher le 2ème puis le 1er et enfin le 3ème champ. Attention : Les champs sont ainsi affichés sans séparateur de champs. | echo "a b c d" | awk '{print $2 $1 $3}'
bac |
Afficher le 2ème champ puis le 1er en les séparant par le caractère -. | echo "a b c d" | awk '{print $2 "-" $1}'
b-a |
| Afficher le dernier champ. | echo "a b c d" | awk '{print $NF}'
d |
| Afficher l'avant-dernier champ. | echo "a b c d" | awk '{print $(NF-1)}'
c |
Afficher le 2ème champ en définissant le séparateur de champ comme étant le caractère ;. | # Ecriture principale
echo "a b;c d" | awk 'BEGIN { FS = ";" } ; {print $2}'
c d
# Autre écriture possible
echo "a b;c d" | awk -F ";" '{print $2}'
c d |
| Afficher le 2ème caractère. En définissant le séparateur de champ par une chaîne vide, chaque caractère est alors défini comme un champ séparé des autres. | echo "ab;cd" | awk 'BEGIN { FS = "" } ; {print $2}'
b |
Des exemples bien plus complexes sont disponibles
La commande sed
sed est un autre utilitaire de manipulation de chaîne de caractère et/ou de fichier texte.
Quelques commandes de sed :
| Manipulation | Syntaxe et exemple |
|---|---|
Remplace toutes les occurrences du texte abc par xyz dans le fichier file.txt. | sed -i 's/abc/xyz/g' file.txt |
| Commente toutes les lignes d'un fichier. | sed -i 's/^/#/g' file.txt |
| Décommente toutes les lignes d'un fichier. | sed -i 's/^#//g' file.txt |
Discussion