Sed et expression régulières

Bonjour,
J'ai une expression régulière qui ne me donne pas exactement le résultat souhaité :
J'ai un fichier qui contient :

../sessions/02 - Selection/Nom_fichier_H1_blabla.ses
../camp/01 - Loisir/AutreNom_00_blabla_H2_H_blibli.ses

le sed
sed "s#\(..\)\([0-9]*\)/\(.[^_]*_\)\(..\)\(.*\)#\4;5;\3\4\5#" monfichier.txt >> liste.txt
(merci Jipicy)

me donne respectivement :
fi;5;sessions/02 - Selection/Nom_fichier_H1_blabla.ses
00;5;camp/01 - Loisir/AutreNom_00_blabla_H2_H_blibli.ses

alors que je souhaiterais
H1;5;...
H2;5;...

Le code souhaité est toujours H puis un chiffre de 1 à 9
H1, H2, H3, ...H9

Vouyez-vous une solution ?

Merci mille fois d'avance
Configuration: Windows XP Internet Explorer 6.0

6 réponses

  1. Je ne vais pas t'embéter plus, ca marche pour toutes les lignes sauf le 00.
    Mais je vais changer le nom du fichier comme ça on sera tranquille.
    C'est super sympa, merci encore.
    1. Modérateur
      Et comme ça :
      sed "s#\(..\)/\(.*_\)\(H[0-9]\)\(.*\)#\3;5;\2\3\4#"
      Si ça merdoie encore un peu sur certaines lignes, il me faut une copie de ces lignes dans leur état original.
      1. Ca marche pour la plupart des lignes (90%), mais j'ai encore quelques erreurs :

        00;5;camp/00 - Admin/SEGM GOOD ACCO_00_000_5CW_G_0089_H1_GOOD ACCOUNTS.ses
        MONTHS;5;sessions/02 - Selection/Create DSN_MONTHSINBOOKS_PL_H1_DSN_MONTHSINBOOKS_PL.ses
        ../sessions/02 - Selection/Create ATM SHOP sns_H1_ATM_SHOP_transp.ses
        ../sessions/02 - Selection/Create OTB BASH 120_H1_OTB BASH 120.ses
        ../sessions/01 - Rules/Rules BASH DIRE_H2_Rules BASH DIRE.ses
        ../sessions/01 - Rules/Rules BASH LC_H2_Flow Rules BASH LC.ses
        ../sessions/01 - Rules/Rules CHARGE LC_H2_Rules Charge LC.ses
        ../sessions/02 - Selection/Create BASH transpactions_H4_BASH_transp_LST12mnth.ses

        Merci
        1. Modérateur
          jp@MDK:~/tmpfs ssh$ cat plop
          ../sessions/02 - Selection/Nom_fichier_H1_blabla.ses
          ../camp/01 - Loisir/AutreNom_00_blabla_H2_H_blibli.ses
          
          jp@MDK:~/tmpfs ssh$ sed "s#\(..\)/\(.[^H]*_\)\([^H]*H.\)\(.*\)#\3;5;\2\3\4#" plop
          H1;5;sessions/02 - Selection/Nom_fichier_H1_blabla.ses
          H2;5;camp/01 - Loisir/AutreNom_00_blabla_H2_H_blibli.ses
          
          jp@MDK:~/tmpfs ssh$

          1. Merci Jipicy,

            Ce que je souhaite, c'est
            blablabla_H1_blibli => H1
            blabla_00_H2_blibli =>H2 (il peut y avoir 2 caractères entre _)
            blabla_H3_blibli_Hebdo =>H3 (il peut y avoir plusieurs _H)
            en revanche, il ne peut y avoir qu'un seul _H suivi d'un chiffre

            Merci
            1. Modérateur
              Salut,

              Essaies ça :
              sed "s#\(..\)/\(.[^H]*_\)\([^H]*H.\)\(.*\)#\3;5;\2\3\4#" 
              Mais bon par rapport à ton précédent post y'a pas mal de changement et je ne suis pas sûr que ce soit ça que tu veuilles ;-(