[perl] Selectionner un bloc de texte
Résolu/Fermé
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
-
7 avril 2010 à 13:50
:):):) - 7 juil. 2010 à 17:35
:):):) - 7 juil. 2010 à 17:35
A voir également:
- [perl] Selectionner un bloc de texte
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
- Ouvrez ce fichier avec un éditeur de texte simple (bloc-notes, textedit, gedit, …) pour y découvrir le nom d'un objet. ✓ - Forum Études / Formation High-Tech
- Formule excel si contient texte alors texte ✓ - Forum Excel
- Mettre un texte en majuscule - Guide
- Télécharger bloc note - Télécharger - Agendas & Calendriers
5 réponses
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
Modifié par dubcek le 7/04/2010 à 14:59
Modifié par dubcek le 7/04/2010 à 14:59
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.
$
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
7 avril 2010 à 15:58
7 avril 2010 à 15:58
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 ++;
}
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
73
7 avril 2010 à 16:00
7 avril 2010 à 16:00
yep merci ^^
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
73
7 avril 2010 à 15:00
7 avril 2010 à 15:00
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.
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
7 avril 2010 à 15:11
7 avril 2010 à 15:11
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
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
73
7 avril 2010 à 15:16
7 avril 2010 à 15:16
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: