Bonjour,


J'ai une liste de fichier compressé (tar.gz) qui sont horodaté.
Exemple :
AOC_303_2017_03_17.tar.gz
IICAPACITE_Capacity_2017_03_20.tar.gz

Comme vous pouvez le voire, la date est au format : aaaa_mm_jj
soit en expression regex : ([0-9]{4}_[0-9]{2}_[0-9]{2})

Quand on utilise l'outil en ligne : https://regex101.com/
avec l'expression : ([0-9]{4}_[0-9]{2}_[0-9]{2}).tar.gz
on voit apparait le groupe 1 : `2017_03_20`

Donc en shell, je me dis que :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
TEST=AOC_532_2017_03_20.tar.gz
echo $TEST | sed -e "s/\([0-9]{4}_[0-9]{2}_[0-9]{2}\).tar.gz/\1/"
Explication par rapport au motif utilisé dans l'outil en ligne :
- j'échape mes 2 parenthèses qui délimite mon sous groupe
- \1 ==> j'affiche ou plutot je remplace ma chaine de caractère par une uniquement la valeur de mon sous groupe.


Malheureusement la commande suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo $TEST | sed -e "s/\([0-9]{4}_[0-9]{2}_[0-9]{2}\).tar.gz/\1/"
Me renvoie le nom complet de ma chaine
Code : Sélectionner tout - Visualiser dans une fenêtre à part
FTM_532_2017_03_20.tar.gz
et non uniquement mon sous groupe (la date du fichier) :