[perl] Selectionner un bloc de texte
Résolu
fxtaa
Messages postés
1050
Date d'inscription
Statut
Membre
Dernière intervention
-
:):):) -
:):):) -
Bonjour,
j'ai un fichier texte de cette forme :
Donc, de ce fichier texte je connais "!!!", "BOB" et "TOM".
Le but serait de sélectionner tout le bloc de texte après "!!!TOM" et s'arrêter avant "!!!BOB".
Si vous savez comment faire je suis preneur ;)
A+
j'ai un fichier texte de cette forme :
!!!TOM Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id mauris eros. Aliquam vel ligula nulla. Proin varius, erat ut blandit pulvinar, massa nulla molestie diam, non accumsan libero orci eu velit. !!!BOB Aenean elementum erat vel nulla congue tempor. Donec sit amet mi mauris. Curabitur nec fermentum dui. Mauris ut velit libero, non consequat ipsum. Fusce id neque a quam sagittis convallis ac eget lacus. Proin ultrices aliquet congue. Etiam accumsan aliquet lectus. Nunc tempor lobortis
Donc, de ce fichier texte je connais "!!!", "BOB" et "TOM".
Le but serait de sélectionner tout le bloc de texte après "!!!TOM" et s'arrêter avant "!!!BOB".
Si vous savez comment faire je suis preneur ;)
A+
A voir également:
- [perl] Selectionner un bloc de texte
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Selectionner texte sur pdf - Guide
- Bloc-notes (windows) - Télécharger - Traitement de texte
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
5 réponses
hello
$ perl -e '$i=0;while(<>){if(/TOM/){$i=1;next};$i=0 if /BOB/; print if $i}' fichier Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id mauris eros. Aliquam vel ligula nulla. Proin varius, erat ut blandit pulvinar, massa nulla molestie diam, non accumsan libero orci eu velit. $
comme ça ?
open (FILE, "mod.txt"); @lignes = <FILE>; close(FILE); $i = 0; $f = 0; while ( @lignes ){ if ($lignes[$i] =~ /!!!TOM/) {$i++; $f=1; next} if ($lignes[$i] =~ /!!!/) {last} if($f) {print $lignes[$i]}; $i ++; }
Yes, merci bien.
As tu une solution avec la contrainte où je ne connais que TOM ou BOB ?
Car je ne peux pas connaitres les 2 en mêmes temps dans mon code, disons que je peux connaitre celui que je cherche mais pas le suivant.
Imaginons que je cherche le bloc de TOM, je connais TOM et "!!!" mais je ne sais pas ce qu'il va y avoir avant ou après.
As tu une solution avec la contrainte où je ne connais que TOM ou BOB ?
Car je ne peux pas connaitres les 2 en mêmes temps dans mon code, disons que je peux connaitre celui que je cherche mais pas le suivant.
Imaginons que je cherche le bloc de TOM, je connais TOM et "!!!" mais je ne sais pas ce qu'il va y avoir avant ou après.
si tu ne connais que TOM, quelle est la condition de fin du bloc ?
ou si tu ne connais que BOB, quelle est la condition de début du bloc ?
à la place de if(/TOM/), on peut tester une variable
ou si tu ne connais que BOB, quelle est la condition de début du bloc ?
à la place de if(/TOM/), on peut tester une variable
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
La condition de début de bloc est les 3 !. J'ai fait ca mais je trouve pas ca super optimisé ... :
open (FILE, "mod.txt"); @lignes = <FILE>; close(FILE); $i = 0; $v = 1; while ( @lignes ){ if ($lignes[$i] =~ /!!!TOM/){ while ($lignes[$v] =~ /^[^!!!]/){ print "$lignes[$v]\n"; $v ++; } if ($lignes[$v] =~ /!!!/){ goto B; } } $i ++; $v = $i+1; } B: