Appliquer une regex sur une variable

Résolu
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. salut,

    d'accord, mais comment, toi, tu reconnais les données à conserver ?
    0
    1. 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
      1. 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
        où
        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
        1. 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