Parce que j'ai souvent besoin d'utiliser des regex, mais pas forcément envie de sortir du Python ou du Perl dans mes scripts de quelques lignes, j'ai réussi à trouver comment utiliser les fonctions capturantes des parenthèses dans les regex en bash.
C'est finalement assez simple, mais il faut le savoir.
Exemple:
content="J'ai 42 sous dans ma poche, j'ai aucun argent"
regex="ai ([[:digit:]]+) sou(s|) dans"
[[ $content =~ $regex ]]
echo ${BASH_REMATCH[0]}
>> ai 42 sous dans
echo ${BASH_REMATCH[1]}
>> 42
En fait, la variable BASH_REMATCH est un tableau qui va contenir en index 0 la regex capturée complète, puis dans les indices suivants chaque parenthèses capturante.
Il est important de noter qu'il faut impérativement mettre au moins la regex en variable, car directement dans le texte cela ne pas marcher (pas bien compris pourquoi d'ailleurs).
Voilà !