[sed] Comment extraire la date d'un fichier horodaté avec les sous groupes
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:
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:
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:
FTM_532_2017_03_20.tar.gz
et non uniquement mon sous groupe (la date du fichier) :