Appliquer une regex sur une variable

Résolu
lamouette -  
 lamouette -
Bonjour à tous,
je souhaiterais extraire une parti d'une chaine stocké dans une variable via une regex, mais j'ignore la syntaxe à utiliser.

Par exemple:

#!/bin/bash

nom=mon.super.fichier.S01E03.blabla.avi


j'aimerai pouvoir recupérer uniquement S01 et E03 ainsi que sont extention .avi sachant que les chiffres changeront.
Je pourrais par exemple avoir mon.super.fichier.S04E11.blabla.mpeg ou autre.

Merci à vous.

4 réponses

  1. Utilisateur anonyme
     
    presque.
    là, tu demandes à ce qu'il y ait quatre chiffres après chaque lettre : {2} + {2}. :/

    soit
    > nom='mon.super.fichier.S01E03.blabla.avi'

    en bash :
    > rgx=".*([Ss][0-9][1-9]).*([Ee][0-9][1-9]).*\.(.*)"
    > [[ $nom =~ $rgx ]] && printf '%s\n' "${BASH_REMATCH[@]}"
    mon.super.fichier.S01E03.blabla.avi
    S01
    E03
    avi
    BASH_REMATCH
    est un tableau, dont l'indice
    0
    contient la totalité de la regex, et les indices suivant, eux, contiennent ce qui est retenu entre les parenthèses.

    ça fonctionne si la
    S
    aison est toujours placée avant l'
    E
    pisode.

    NB: le
    >
    , c'est le prompt du terminal.
    1
  2. Utilisateur anonyme
     
    salut,

    d'accord, mais comment, toi, tu reconnais les données à conserver ?
    0
  3. lamouette
     
    bonjour lapiel et bien je voudrais juste pouvoir récupérer le bout de chaîne aillant le format S02 soit la lettre S suivi d'un chiffre de 0 à 9 et d'un autre chiffre de 1 à 9 idem pour E11 peu importe leur emplacement dans la chaîne. Se qui dans une regex pourrais donner ça:

    [Ss][0-9]{2}[1-9]{2}
    [Ee][0-9]{2}[1-9]{2}

    Comment donc faire pour ne récupérer que ce qui correspond à la regex dans une variable?

    Pour l’extension j'ai résolu le problème grâce à la commande cut
    0
  4. lamouette
     
    là, tu demandes à ce qu'il y ait quatre chiffres après chaque lettre : {2} + {2}. :/
    c'est vrai j'avias pas vu, probleme se copier coller.

    Sinon merci c'est parfait.

    C'est marrant, je découvre bash et je trouve que certaine syntaxe ressemble au C.

    Merci et à bientot
    0