Lignes de code Script perl [Fermé]

Signaler
Messages postés
4
Date d'inscription
dimanche 7 octobre 2012
Statut
Membre
Dernière intervention
8 octobre 2012
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
Bonjour à Tous et à Toutes,

Mon cas est le suivant:

Je dispose d'un répertoire avec de nombreux fichiers textes ayant tous un contenu quasi similaire. J'aimerais que mon .pl exécute les documents un à un et qu'il extrait:

- Un contenu texte compris entre <MOT1> et plusieurs lignes plus loin <MOT2>
- Qu'il récupère la ligne commençant par <RESUMER> (par exemple)
- Qu'il rajoute une ligne de <blabla "NOMDUFICHIER"> au début puis une autre <end> à la fin

Puis S'ENREGISTRE

Exemple (raccourci) de document à traiter:
<bla>
<bla>
<bla>
<MOT1>
<bli>
<bli>
<MOT2>
<bla>
<bla>
<RESUMER>
<bla>
<bla>

Ce qui représente le Saint Graal pour moi :

<TEXTEBLABLA="NOMDUFICHIER">
<MOT1>
<bli>
<bli>
<MOT2>
<RESUMER>
<END>

Cette requête est à exécuter sur windows XP.
Actuellement je fonctionne avec des .bat qui me pré-mâche le travaille, on m'a conseiller d'écrire ce petit script en PERL mais ma connaissance est nouvelle (trop encore...)

N'hésitez pas si besoin d'amples informations et Merci d'avance pour votre retour.

1 réponse

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
Salut,

A adapter pour Windows
lami20j@debian:~$ cat fic1
<bla>
<bla>
<bla>
<MOT1>
<bli>
<bli>
<MOT2>
<bla>
<bla>
<RESUMER> aaaaa
<bla>
<bla>
lami20j@debian:~$ cat fic2
<bla>
<bla>
<bla>
<MOT1>
<bli>
<bli>
<MOT2>
<bla>
<bla>
<RESUMER> bbbb
<bla>
<bla>
lami20j@debian:~$ cat ecrire.pl 
#!/usr/bin/perl -i.orig
use strict;use warnings;

while (<>){
  print "<TEXTEBLABLA=\"NOMDUFICHIER\">\n" if $.==1;
  print if /\<MOT1\>/ ... /\<MOT2\>/;
  print if /^<RESUMER>/;
  print "<END>\n" if eof;
}

lami20j@debian:~$ perl ecrire.pl fic*
lami20j@debian:~$ cat fic1
<TEXTEBLABLA="NOMDUFICHIER">
<MOT1>
<bli>
<bli>
<MOT2>
<RESUMER> aaaaa
<END>
lami20j@debian:~$ cat fic2
<MOT1>
<bli>
<bli>
<MOT2>
<RESUMER> bbbb
<END>
lami20j@debian:~$