Je ne connais Rien à perl.
J'ai commencé à lire de la documentation mais je m'y perd et le temps
m'est compté...
Quelqu'un aurait-il la gentillesse de donner la commande perle qui
permet de modifier dans un fichier tous les bloques de la forme:
/*ANCune_ ancre_XANC*/
Du code...
Du code...
{/*DOC
De la documentation
De la documentation
DOC*/
Du code...
Du code...
}
en
<A une_ ancre_X></A>
Du code...
Du code...
{<B>
De la documentation
De la documentation
</B>
Du code...
Du code...
}
<C>blabla une_ ancre_X blabla</C>
Quels liens me conseillez vous pour apprendre *rapidement* ce genre de
commande ?
--
Merci de votre attention,
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Quels liens me conseillez vous pour apprendre *rapidement* ce genre de commande ?
Sur <http://perldoc.perl.org/>, il y a un lien vers des tutoriels et FAQs. Sinon Google, puis taper "tutoriel perl" ou "tutorial perl", mais je ne sais pas si c'est très bon...
Dans l'article <87odnnh54c.fsf@tele2.fr>,
Ph. Ivaldi <piv_pasde@pub_tele2.fr> écrit:
Quels liens me conseillez vous pour apprendre *rapidement* ce genre de
commande ?
Sur <http://perldoc.perl.org/>, il y a un lien vers des tutoriels et
FAQs. Sinon Google, puis taper "tutoriel perl" ou "tutorial perl",
mais je ne sais pas si c'est très bon...
Quels liens me conseillez vous pour apprendre *rapidement* ce genre de commande ?
Sur <http://perldoc.perl.org/>, il y a un lien vers des tutoriels et FAQs. Sinon Google, puis taper "tutoriel perl" ou "tutorial perl", mais je ne sais pas si c'est très bon...
Je ne connais Rien à perl. J'ai commencé à lire de la documentation mais je m'y perd et le temps m'est compté... Quelqu'un aurait-il la gentillesse de donner la commande perle qui permet de modifier dans un fichier tous les bloques de la forme:
/*ANCune_ ancre_XANC*/ Du code... Du code... {/*DOC De la documentation De la documentation DOC*/ Du code... Du code... }
en
<A une_ ancre_X></A> Du code... Du code... {<B> De la documentation De la documentation </B> Du code... Du code... } <C>blabla une_ ancre_X blabla</C>
Quels liens me conseillez vous pour apprendre *rapidement* ce genre de commande ?
Je ne suis pas un programmeur avancé mais voila ce que je ferais :
my $fichier=$ARGV[0]; open in, "< $fichier" or die; open out, "> out.txt" or die; my $l0 = <in>; while ($l0) { $l0 =~ s//*ANCune_ ancre_XANC*//<A une_ ancre_X></A>/; $l0 =~ s/{/*DOC/{<B>/; $l0 =~ s/DOC*//</B>/; $l0 =~ s/}/}n<C>blabla une_ ancre_X blabla</C>/; print out $l0; $l0=<in>; } close in; close out; rename("out.txt",$fichier) || die "Erreur au renommage : $!"; exit(0);
Je sauve ce fichier dans transform.pl et je fais 'perl transform.pl mon_fichier_a_modifier'. Voila, si certains programmeurx experimentés peuvent confirmer...
Bonjour,
Je ne connais Rien à perl.
J'ai commencé à lire de la documentation mais je m'y perd et le temps
m'est compté...
Quelqu'un aurait-il la gentillesse de donner la commande perle qui
permet de modifier dans un fichier tous les bloques de la forme:
/*ANCune_ ancre_XANC*/
Du code...
Du code...
{/*DOC
De la documentation
De la documentation
DOC*/
Du code...
Du code...
}
en
<A une_ ancre_X></A>
Du code...
Du code...
{<B>
De la documentation
De la documentation
</B>
Du code...
Du code...
}
<C>blabla une_ ancre_X blabla</C>
Quels liens me conseillez vous pour apprendre *rapidement* ce genre de
commande ?
Je ne suis pas un programmeur avancé mais voila ce que je ferais :
my $fichier=$ARGV[0];
open in, "< $fichier" or die;
open out, "> out.txt" or die;
my $l0 = <in>;
while ($l0)
{
$l0 =~ s//*ANCune_ ancre_XANC*//<A une_ ancre_X></A>/;
$l0 =~ s/{/*DOC/{<B>/;
$l0 =~ s/DOC*//</B>/;
$l0 =~ s/}/}n<C>blabla une_ ancre_X blabla</C>/;
print out $l0;
$l0=<in>;
}
close in;
close out;
rename("out.txt",$fichier) || die "Erreur au renommage : $!";
exit(0);
Je sauve ce fichier dans transform.pl et je fais 'perl transform.pl
mon_fichier_a_modifier'.
Voila, si certains programmeurx experimentés peuvent confirmer...
Je ne connais Rien à perl. J'ai commencé à lire de la documentation mais je m'y perd et le temps m'est compté... Quelqu'un aurait-il la gentillesse de donner la commande perle qui permet de modifier dans un fichier tous les bloques de la forme:
/*ANCune_ ancre_XANC*/ Du code... Du code... {/*DOC De la documentation De la documentation DOC*/ Du code... Du code... }
en
<A une_ ancre_X></A> Du code... Du code... {<B> De la documentation De la documentation </B> Du code... Du code... } <C>blabla une_ ancre_X blabla</C>
Quels liens me conseillez vous pour apprendre *rapidement* ce genre de commande ?
Je ne suis pas un programmeur avancé mais voila ce que je ferais :
my $fichier=$ARGV[0]; open in, "< $fichier" or die; open out, "> out.txt" or die; my $l0 = <in>; while ($l0) { $l0 =~ s//*ANCune_ ancre_XANC*//<A une_ ancre_X></A>/; $l0 =~ s/{/*DOC/{<B>/; $l0 =~ s/DOC*//</B>/; $l0 =~ s/}/}n<C>blabla une_ ancre_X blabla</C>/; print out $l0; $l0=<in>; } close in; close out; rename("out.txt",$fichier) || die "Erreur au renommage : $!"; exit(0);
Je sauve ce fichier dans transform.pl et je fais 'perl transform.pl mon_fichier_a_modifier'. Voila, si certains programmeurx experimentés peuvent confirmer...
Ph. Ivaldi
Le 21 février 2007 à 20h07:53, Bibi69 écrivit :
Je ne suis pas un programmeur avancé mais voila ce que je ferais :
my $fichier=$ARGV[0]; open in, "< $fichier" or die; open out, "> out.txt" or die; my $l0 = <in>; while ($l0) { $l0 =~ s//*ANCune_ ancre_XANC*//<A une_ ancre_X></A>/; $l0 =~ s/{/*DOC/{<B>/; $l0 =~ s/DOC*//</B>/; $l0 =~ s/}/}n<C>blabla une_ ancre_X blabla</C>/; print out $l0; $l0=<in>; } close in; close out; rename("out.txt",$fichier) || die "Erreur au renommage : $!"; exit(0);
Je sauve ce fichier dans transform.pl et je fais 'perl transform.pl mon_fichier_a_modifier'.
Je n'est pas été très clair: le texte "une_ ancre_X" est un texte variable qui tient sur une seule ligne. J'aurais dû mettre "_Un-texte-x_" mais je pensais déjà au résultat.
Je modifie légèrement ma demande (je pense qu'elle est plus simple grâce à la balise //EXA): Transformer tous les bloques de la forme:
/*ANC_UN-texte-x_ANC*/ Du code... Du code... {/*DOC De la documentation De la documentation DOC*/ Du code... Du code... } //EXA
en:
<A _UN-texte-x_></A> Du code... Du code... {<B> De la documentation De la documentation </B> Du code... Du code... } <C>blabla _UN-texte-x_ blabla</C>
Je peux peut-être m'en sortir si l'on explique pourquoi ce code ne supprime pas tout ce qui se trouve entre /*DOC et DOC*/ dans tous les bloques commençant par /*ANC et se termiant par //EXA
Je me suis inspiré d'un exemple que l'on m'a proposé pour autre chose. Je ne comprends le sens de ',seg' à la fin de la commande (le reste ressemble à du 'sed').
Merci de votre aide. -- Philippe Ivaldi. http://piprim.tuxfamily.org/
Le 21 février 2007 à 20h07:53,
Bibi69 <noreply@free.fr> écrivit :
Je ne suis pas un programmeur avancé mais voila ce que je ferais :
my $fichier=$ARGV[0];
open in, "< $fichier" or die;
open out, "> out.txt" or die;
my $l0 = <in>;
while ($l0)
{
$l0 =~ s//*ANCune_ ancre_XANC*//<A une_ ancre_X></A>/;
$l0 =~ s/{/*DOC/{<B>/;
$l0 =~ s/DOC*//</B>/;
$l0 =~ s/}/}n<C>blabla une_ ancre_X blabla</C>/;
print out $l0;
$l0=<in>;
}
close in;
close out;
rename("out.txt",$fichier) || die "Erreur au renommage : $!";
exit(0);
Je sauve ce fichier dans transform.pl et je fais 'perl transform.pl
mon_fichier_a_modifier'.
Je n'est pas été très clair:
le texte "une_ ancre_X" est un texte variable qui tient sur une seule
ligne.
J'aurais dû mettre "_Un-texte-x_" mais je pensais déjà au résultat.
Je modifie légèrement ma demande (je pense qu'elle est plus simple
grâce à la balise //EXA):
Transformer tous les bloques de la forme:
/*ANC_UN-texte-x_ANC*/
Du code...
Du code...
{/*DOC
De la documentation
De la documentation
DOC*/
Du code...
Du code...
}
//EXA
en:
<A _UN-texte-x_></A>
Du code...
Du code...
{<B>
De la documentation
De la documentation
</B>
Du code...
Du code...
}
<C>blabla _UN-texte-x_ blabla</C>
Je peux peut-être m'en sortir si l'on explique pourquoi ce code ne
supprime pas tout ce qui se trouve entre /*DOC et DOC*/ dans tous les
bloques commençant par /*ANC et se termiant par //EXA
Je me suis inspiré d'un exemple que l'on m'a proposé pour autre chose.
Je ne comprends le sens de ',seg' à la fin de la commande (le reste
ressemble à du 'sed').
Merci de votre aide.
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Je ne suis pas un programmeur avancé mais voila ce que je ferais :
my $fichier=$ARGV[0]; open in, "< $fichier" or die; open out, "> out.txt" or die; my $l0 = <in>; while ($l0) { $l0 =~ s//*ANCune_ ancre_XANC*//<A une_ ancre_X></A>/; $l0 =~ s/{/*DOC/{<B>/; $l0 =~ s/DOC*//</B>/; $l0 =~ s/}/}n<C>blabla une_ ancre_X blabla</C>/; print out $l0; $l0=<in>; } close in; close out; rename("out.txt",$fichier) || die "Erreur au renommage : $!"; exit(0);
Je sauve ce fichier dans transform.pl et je fais 'perl transform.pl mon_fichier_a_modifier'.
Je n'est pas été très clair: le texte "une_ ancre_X" est un texte variable qui tient sur une seule ligne. J'aurais dû mettre "_Un-texte-x_" mais je pensais déjà au résultat.
Je modifie légèrement ma demande (je pense qu'elle est plus simple grâce à la balise //EXA): Transformer tous les bloques de la forme:
/*ANC_UN-texte-x_ANC*/ Du code... Du code... {/*DOC De la documentation De la documentation DOC*/ Du code... Du code... } //EXA
en:
<A _UN-texte-x_></A> Du code... Du code... {<B> De la documentation De la documentation </B> Du code... Du code... } <C>blabla _UN-texte-x_ blabla</C>
Je peux peut-être m'en sortir si l'on explique pourquoi ce code ne supprime pas tout ce qui se trouve entre /*DOC et DOC*/ dans tous les bloques commençant par /*ANC et se termiant par //EXA
Je me suis inspiré d'un exemple que l'on m'a proposé pour autre chose. Je ne comprends le sens de ',seg' à la fin de la commande (le reste ressemble à du 'sed').
Merci de votre aide. -- Philippe Ivaldi. http://piprim.tuxfamily.org/
Ph. Ivaldi
Le 21 février 2007 à 19h16:11, Vincent Lefevre <vincent+ écrivit :
Sur <http://perldoc.perl.org/>, il y a un lien vers des tutoriels et FAQs. Sinon Google, puis taper "tutoriel perl" ou "tutorial perl", mais je ne sais pas si c'est très bon...
Merci! Il y a aussi beaucoup (c'est rien de le dire) de documentation ici: http://perl.enstimac.fr/ Mais je ne veux pas apprendre tout perl, j'aurais juste besoin de savoir manipuler les commandes du style: perl -0777 -pe 's......' fichier.txt -- Philippe Ivaldi. http://piprim.tuxfamily.org/
Le 21 février 2007 à 19h16:11,
Vincent Lefevre <vincent+news@vinc17.org> écrivit :
Sur <http://perldoc.perl.org/>, il y a un lien vers des tutoriels et
FAQs. Sinon Google, puis taper "tutoriel perl" ou "tutorial perl",
mais je ne sais pas si c'est très bon...
Merci!
Il y a aussi beaucoup (c'est rien de le dire) de documentation ici:
http://perl.enstimac.fr/
Mais je ne veux pas apprendre tout perl, j'aurais juste besoin de savoir
manipuler les commandes du style:
perl -0777 -pe 's......' fichier.txt
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Le 21 février 2007 à 19h16:11, Vincent Lefevre <vincent+ écrivit :
Sur <http://perldoc.perl.org/>, il y a un lien vers des tutoriels et FAQs. Sinon Google, puis taper "tutoriel perl" ou "tutorial perl", mais je ne sais pas si c'est très bon...
Merci! Il y a aussi beaucoup (c'est rien de le dire) de documentation ici: http://perl.enstimac.fr/ Mais je ne veux pas apprendre tout perl, j'aurais juste besoin de savoir manipuler les commandes du style: perl -0777 -pe 's......' fichier.txt -- Philippe Ivaldi. http://piprim.tuxfamily.org/
Benoit Izac
Bonjour,
le 21/02/2007 à 23:38, Ph. Ivaldi a écrit dans le message :
Je peux peut-être m'en sortir si l'on explique pourquoi ce code ne supprime pas tout ce qui se trouve entre /*DOC et DOC*/ dans tous les bloques commençant par /*ANC et se termiant par //EXA
s c'est pour que « . » corresponde aussi à une fin de ligne.
Je me suis inspiré d'un exemple que l'on m'a proposé pour autre chose. Je ne comprends le sens de ',seg' à la fin de la commande (le reste ressemble à du 'sed').
pour l'explication sur s, e, g et x : perldoc perlop puis chercher s/PATTERN/REPLACEMENT/egimosx
-- Benoit Izac
Bonjour,
le 21/02/2007 à 23:38, Ph. Ivaldi a écrit dans le message
<87k5ybgmqp.fsf@tele2.fr> :
Je peux peut-être m'en sortir si l'on explique pourquoi ce code ne
supprime pas tout ce qui se trouve entre /*DOC et DOC*/ dans tous les
bloques commençant par /*ANC et se termiant par //EXA
s c'est pour que « . » corresponde aussi à une fin de ligne.
Je me suis inspiré d'un exemple que l'on m'a proposé pour autre chose.
Je ne comprends le sens de ',seg' à la fin de la commande (le reste
ressemble à du 'sed').
le 21/02/2007 à 23:38, Ph. Ivaldi a écrit dans le message :
Je peux peut-être m'en sortir si l'on explique pourquoi ce code ne supprime pas tout ce qui se trouve entre /*DOC et DOC*/ dans tous les bloques commençant par /*ANC et se termiant par //EXA
s c'est pour que « . » corresponde aussi à une fin de ligne.
Je me suis inspiré d'un exemple que l'on m'a proposé pour autre chose. Je ne comprends le sens de ',seg' à la fin de la commande (le reste ressemble à du 'sed').
Nickel! Une commande qui correspond à ce que je veux est donc: perl -0777 -pe 's{/*ANC.*?//EXA} {$_=$&; s//*ANC(.*?)ANC*/(.*?)/*DOC(.*?)DOC*/(.*?)//EXA/ <A1></A>2<B>3</B>4<C>blabla 1 blabla</C>/gs;$_}segx' temp.txt
pour l'explication sur s, e, g et x : perldoc perlop puis chercher s/PATTERN/REPLACEMENT/egimosx
e Évaluez la partie droite comme une expression. g Substitution globale, c.-à-d. toutes les occurrences. i Motif indépendant de la casse (majuscules/minuscules). m Traitement de chaîne comme étant multi-lignes. o Compilation du motif uniquement la première fois. s Traitement de la chaîne comme étant une seule ligne. x Utilisation des expressions rationnelles étendues.
MERCI! -- Philippe Ivaldi. http://piprim.tuxfamily.org/
Le 22 février 2007 à 00h16:45,
Benoit Izac <use.reply.to@INVALID.ADDRESS> écrivit :
pourquoi ce code ne
supprime pas tout ce qui se trouve entre /*DOC et DOC*/ dans tous les
bloques commençant par /*ANC et se termiant par //EXA
Nickel!
Une commande qui correspond à ce que je veux est donc:
perl -0777 -pe
's{/*ANC.*?//EXA}
{$_=$&;
s//*ANC(.*?)ANC*/(.*?)/*DOC(.*?)DOC*/(.*?)//EXA/
<A1></A>2<B>3</B>4<C>blabla 1 blabla</C>/gs;$_}segx' temp.txt
pour l'explication sur s, e, g et x :
perldoc perlop
puis chercher s/PATTERN/REPLACEMENT/egimosx
e Évaluez la partie droite comme une expression.
g Substitution globale, c.-à-d. toutes les occurrences.
i Motif indépendant de la casse (majuscules/minuscules).
m Traitement de chaîne comme étant multi-lignes.
o Compilation du motif uniquement la première fois.
s Traitement de la chaîne comme étant une seule ligne.
x Utilisation des expressions rationnelles étendues.
MERCI!
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Nickel! Une commande qui correspond à ce que je veux est donc: perl -0777 -pe 's{/*ANC.*?//EXA} {$_=$&; s//*ANC(.*?)ANC*/(.*?)/*DOC(.*?)DOC*/(.*?)//EXA/ <A1></A>2<B>3</B>4<C>blabla 1 blabla</C>/gs;$_}segx' temp.txt
pour l'explication sur s, e, g et x : perldoc perlop puis chercher s/PATTERN/REPLACEMENT/egimosx
e Évaluez la partie droite comme une expression. g Substitution globale, c.-à-d. toutes les occurrences. i Motif indépendant de la casse (majuscules/minuscules). m Traitement de chaîne comme étant multi-lignes. o Compilation du motif uniquement la première fois. s Traitement de la chaîne comme étant une seule ligne. x Utilisation des expressions rationnelles étendues.
MERCI! -- Philippe Ivaldi. http://piprim.tuxfamily.org/
Vincent Lefevre
Dans l'article , Ph. Ivaldi écrit:
Mais je ne veux pas apprendre tout perl, j'aurais juste besoin de savoir manipuler les commandes du style: perl -0777 -pe 's......' fichier.txt
Tu peux aller voir dans la doc directement ce qui t'intéresse.
Concernant les pages du manuel, ça correspond à perlre (sur les regexp) et un bout de perlop (sur l'utilisation de s/.../.../).
mais ça ne marche pas. Pourtant si je remplace "$PERL" par la sortie de "echo $PERL", ça fonctionne. Comment faire pour utiliser la variable $PERL (plus compliquée à construire en réalité) dans la commande perl ? -- Merci de votre aide, Philippe Ivaldi. http://piprim.tuxfamily.org/
Crosspost & Followup-To: fr.comp.os.unix
J'ai encore un problème...
Dans un script bash j'ai ce code, dont j'attends qu'il supprime tout le
texte compris entre les mots ANC et EXA:
mais ça ne marche pas.
Pourtant si je remplace "$PERL" par la sortie de "echo $PERL", ça
fonctionne.
Comment faire pour utiliser la variable $PERL (plus compliquée à
construire en réalité) dans la commande perl ?
--
Merci de votre aide,
Philippe Ivaldi.
http://piprim.tuxfamily.org/
mais ça ne marche pas. Pourtant si je remplace "$PERL" par la sortie de "echo $PERL", ça fonctionne. Comment faire pour utiliser la variable $PERL (plus compliquée à construire en réalité) dans la commande perl ? -- Merci de votre aide, Philippe Ivaldi. http://piprim.tuxfamily.org/
Benoit Izac
Bonjour,
le 22/02/2007 à 20:15, Ph. Ivaldi a écrit dans le message :
Dans un script bash j'ai ce code, dont j'attends qu'il supprime tout le texte compris entre les mots ANC et EXA:
mais ça ne marche pas. Pourtant si je remplace "$PERL" par la sortie de "echo $PERL", ça fonctionne. Comment faire pour utiliser la variable $PERL (plus compliquée à construire en réalité) dans la commande perl ?
Pourquoi ne pas remplacer ce script bash par un script tout en Perl ?
-- Benoit Izac
Bonjour,
le 22/02/2007 à 20:15, Ph. Ivaldi a écrit dans le message
<87zm766m2b.fsf@tele2.fr> :
Dans un script bash j'ai ce code, dont j'attends qu'il supprime tout
le texte compris entre les mots ANC et EXA:
mais ça ne marche pas.
Pourtant si je remplace "$PERL" par la sortie de "echo $PERL", ça
fonctionne.
Comment faire pour utiliser la variable $PERL (plus compliquée à
construire en réalité) dans la commande perl ?
Pourquoi ne pas remplacer ce script bash par un script tout en Perl ?
mais ça ne marche pas. Pourtant si je remplace "$PERL" par la sortie de "echo $PERL", ça fonctionne. Comment faire pour utiliser la variable $PERL (plus compliquée à construire en réalité) dans la commande perl ?
Pourquoi ne pas remplacer ce script bash par un script tout en Perl ?