Lignes de code Script perl

Fermé
jessyjames75 Messages postés 4 Date d'inscription dimanche 7 octobre 2012 Statut Membre Dernière intervention 8 octobre 2012 - 8 oct. 2012 à 16:14
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 8 oct. 2012 à 21:27
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.

A voir également:

1 réponse

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
8 oct. 2012 à 21:27
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:~$  

0