Sed et expression régulières

Fermé
deeper - 12 juin 2009 à 10:44
 deeper - 12 juin 2009 à 13:57
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

6 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 juin 2009 à 11:04
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 juin 2009 à 11:30
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 juin 2009 à 13:32
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
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