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. 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. 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. 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