#!/bin/bash
# patt-matching.sh

# Reconnaissance de motifs avec les opérateurs de substitution # ## % %%

var1=abcd12345abc6789
motif1=a*c  # * (joker) recherche tout ce qui se trouve entre a et c.

echo
echo "var1 = $var1"           # abcd12345abc6789
echo "var1 = ${var1}"         # abcd12345abc6789   (autre forme)
echo "Nombre de caractères dans ${var1} = ${#var1}"
echo

echo "motif1 = $motif1"     # a*c  (tout entre 'a' et 'c')
echo "------------------"
echo '${var1#$motif1}  =' "${var1#$motif1}"    #                             d12345abc6789
#  Correspondance la plus petite, supprime les trois premiers caractères de abcd12345abc6789
#                                                    ^^^^^^^^               |-|
echo '${var1##$motif1} =' "${var1##$motif1}"   #                                      6789      
#  Correspondance la plus grande possible, supprime les 12 premiers caractères de abcd12345abc6789
#                                                          ^^^^^^^^               |----------|

echo; echo; echo

motif2=b*9             # tout entre 'b' et '9'
echo "var1 = $var1"     # Toujours  abcd12345abc6789
echo

echo "motif2 = $motif2"
echo "------------------"
echo '${var1%motif2}  =' "${var1%$motif2}"     #                        abcd12345a
#  Correspondance la plus petite, supprime les six derniers caractères de abcd12345abc6789
#                                                  ^^^^^^^^                      |----|
echo '${var1%%motif2} =' "${var1%%$motif2}"    #                       a
#  Correspondance la plus grande, supprime les quinze derniers caractères de abcd12345abc6789
#                                                    ^^^^^^^^                |-------------|

#  Souvenez-vous, # et ## fonctionnent à partir de la gauche (début) de la chaîne
#                 % et %% fonctionnent à partir de la droite.

echo

exit 0
