Bonjour,
J'ai un fichier qui se compose comme cela :
Type de document Ouvrage
Thème ARCHITECTURE
Titre Symboles et décors des maisons villageoises : marques sociales, protections magiques
Auteurs FILLIPETTI Hervé
isbn 2-84038-219-9
Référence Rustica
Commentaire fgsdfgsdfggggfdgfssdfg
sdfgdsfgdsfgsd
sdfgdfgs
Numéro 121
Titre2 test
Toutes mes lignes commencent pas des "intitulés de champs", malheureusement dans le champ commentaire il y arrive qu'il y ait des retour à la ligne. J'ai un script qui interpret ses retour à la ligne comme des chagements de champs. Je voudrais donc supprimer tout les \n qui ne sont pas suivit d'un intitulé(Auteurs,isbn,Numéro...).
Je ne connais vraiment pas grand chose à Perl et je ne vois aps comment mettre en forme mon idée.
Je pensais à
récupéré les saut de lignes et le mot suivant avec un /(\n)(.*\s)/
Puis tester si $2 etait dans ma liste de champs(Auteurs,isbn,Numéro...).
Si c'est le cas je ne fais rien sinon je fais un s/$1$2//g.
Je ne sais pas si cette solution est correcte, en tout cas si elle l'est je ne vois aps comment appliquer ca en perle, quelqueu pourrait m'aideR?
Merci!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #!/usr/bin/perl open(FH, 'fichiertest.txt'); my $content; $content .= $_ while (<FH>); close(FH); my $condition = '(\n)(\p{L}*)'; my $champok = 1; my @montableau_de_champ = ("Titre","Numéro","Auteurs"); while ( $content =~ /$condition/) { foreach $mavar (@montableau_de_champ) { if ($2 == $mavar) { $champok=0; }; } if ( $champok == 1 ) { $content =~ s/$1$2//; } }
Partager