Sed et expression régulières

deeper -  
 deeper -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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 ;-(
    0
  2. deeper
     
    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
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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$

    0
  4. deeper
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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.
    0
  7. deeper
     
    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.
    0