Ceci est une ancienne révision du document !


Manipulations des chaînes de caractères

Création — — Nicolas THOREZ 2021/07/22 15:34

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
${TEXT[[:cntrl:]]}'' |Supprime les caractères de contrôle en fin de chaîne. |<sxh bash>TEXT="Test\r\n" echo ${TEXTcntrl} Test</sxh>| |||| ===== 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 : * awk manipule 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. * awk est un interpréteur de commandes. Son utilisation sera toujours de type awk '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 $0 correspond 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 exemple de commandes avec awk : |< 100% 50% 50% >| ^ Manipulation ^ Syntaxe et exemple ^ |Afficher le 2ème champ. |<sxh bash>echo "a b c d" | awk '{print $2}' b</sxh>| |Afficher les 2èmes et 4èmes champs. Attention : Les champs sont ainsi affichés sans séparateur de champs. |<sxh bash>echo "a b c d" | awk '{print $2 $3}' bd</sxh>| |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. |<sxh bash>echo "a b c d" | awk '{print $2 $1 $3}' bac</sxh>| |Afficher le 2ème champ puis le 1er en les séparant par le caractère -. |<sxh bash>echo "a b c d" | awk '{print $2 "-" $1}' b-a</sxh>| |Afficher le dernier champ. |<sxh bash>echo "a b c d" | awk '{print $NF}' d</sxh>| |Afficher l'avant-dernier champ. |<sxh bash>echo "a b c d" | awk '{print $(NF-1)}' c</sxh>| |Afficher le 2ème champ en définissant le séparateur de champ comme étant le caractère ;. |<sxh bash># 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</sxh>| |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. |<sxh bash>echo "ab;cd" | awk 'BEGIN { FS = "" } ; {print $2}' b</sxh>| Des exemples bien plus complexes sont disponibles sur les sites suivants : * getimax * Site de Bruno GARCIA ===== La commande sed ===== * Manuel de la commande sed sed est un autre utilitaire de manipulation de chaîne de caractère et/ou de fichier texte. Quelques exemple de commandes avec sed : |< 100% 70% 30% >| ^ 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

Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • bash_base_4.1627544289.txt.gz
  • Dernière modification : 2021/07/29 09:38
  • de nekan