regex en ligne de commande et script: résultat différent
4 réponses
ctobini
Bonjour,
J'ai un fichier que je voudrais parser, j'ai =E9crit pour ceci un petit
script, mais avant d'=E9crire le script j'ai essay=E9 sur quelques
crit=E8res seulement en ligne de commande, et l=E0 surprise, j'ai des
r=E9sultats divergents :
Le script :
my $count =3D 0;
while (my $line =3D <>) {
if ($line =3D~ /control\s{1,}0\d+\/) {
$count++
}
}
Et en ligne de commande :
perl -ne 'print if /control\s{1,}0\d+/' fichier.txt | wc -l
J'ai un r=E9sultat l=E9g=E8rement diff=E9rent, et apr=E8s v=E9rifications, =
je
ne pense pas qu'il y ait une erreur au niveau du regex.
Y a-t'il une syntaxe particuli=E8re pour ce genre de traitement en ligne
de commande ?
slt, tu as un fichier de test et les traces des résultats.
JacK
ctobini wrote:
Bonjour,
J'ai un fichier que je voudrais parser, j'ai écrit pour ceci un petit script, mais avant d'écrire le script j'ai essayé sur quelques critères seulement en ligne de commande, et là surprise, j'ai des résultats divergents :
Le script :
my $count = 0; while (my $line = <>) { if ($line =~ /controls{1,}0d+/) {
^
ou est la suite
$count++ } }
Et en ligne de commande :
perl -ne 'print if /controls{1,}0d+/' fichier.txt | wc -l
Cela semble ok
ctobini wrote:
Bonjour,
J'ai un fichier que je voudrais parser, j'ai écrit pour ceci un petit
script, mais avant d'écrire le script j'ai essayé sur quelques
critères seulement en ligne de commande, et là surprise, j'ai des
résultats divergents :
Le script :
my $count = 0;
while (my $line = <>) {
if ($line =~ /controls{1,}0d+/) {
^
ou est la suite
$count++
}
}
Et en ligne de commande :
perl -ne 'print if /controls{1,}0d+/' fichier.txt | wc -l
J'ai un fichier que je voudrais parser, j'ai écrit pour ceci un petit script, mais avant d'écrire le script j'ai essayé sur quelques critères seulement en ligne de commande, et là surprise, j'ai des résultats divergents :
Le script :
my $count = 0; while (my $line = <>) { if ($line =~ /controls{1,}0d+/) {
^
ou est la suite
$count++ } }
Et en ligne de commande :
perl -ne 'print if /controls{1,}0d+/' fichier.txt | wc -l
Cela semble ok
JacK
ctobini wrote:
Bonjour,
J'ai un fichier que je voudrais parser, j'ai écrit pour ceci un petit script, mais avant d'écrire le script j'ai essayé sur quelques critères seulement en ligne de commande, et là surprise, j'ai des résultats divergents :
Le script :
my $count = 0; while (my $line = <>) { if ($line =~ /controls{1,}0d+/) {
if ($line =~ /controls{1,}0d+/) {
$count++ } }
Et en ligne de commande :
perl -ne 'print if /controls{1,}0d+/' fichier.txt | wc -l
Cela semble ok.
J'ai un résultat légèrement différent, et après vérificatio ns, je ne pense pas qu'il y ait une erreur au niveau du regex.
Y a-t'il une syntaxe particulière pour ce genre de traitement en lign e de commande ?
En vous remerciant,
C. Tobini
ctobini wrote:
Bonjour,
J'ai un fichier que je voudrais parser, j'ai écrit pour ceci un petit
script, mais avant d'écrire le script j'ai essayé sur quelques
critères seulement en ligne de commande, et là surprise, j'ai des
résultats divergents :
Le script :
my $count = 0;
while (my $line = <>) {
if ($line =~ /controls{1,}0d+/) {
if ($line =~ /controls{1,}0d+/) {
$count++
}
}
Et en ligne de commande :
perl -ne 'print if /controls{1,}0d+/' fichier.txt | wc -l
Cela semble ok.
J'ai un résultat légèrement différent, et après vérificatio ns, je
ne pense pas qu'il y ait une erreur au niveau du regex.
Y a-t'il une syntaxe particulière pour ce genre de traitement en lign e
de commande ?
J'ai un fichier que je voudrais parser, j'ai écrit pour ceci un petit script, mais avant d'écrire le script j'ai essayé sur quelques critères seulement en ligne de commande, et là surprise, j'ai des résultats divergents :
Le script :
my $count = 0; while (my $line = <>) { if ($line =~ /controls{1,}0d+/) {
if ($line =~ /controls{1,}0d+/) {
$count++ } }
Et en ligne de commande :
perl -ne 'print if /controls{1,}0d+/' fichier.txt | wc -l
Cela semble ok.
J'ai un résultat légèrement différent, et après vérificatio ns, je ne pense pas qu'il y ait une erreur au niveau du regex.
Y a-t'il une syntaxe particulière pour ce genre de traitement en lign e de commande ?
En vous remerciant,
C. Tobini
Benoit Izac
Bonjour,
le 29/05/2006 à 12:49, ctobini a écrit dans le message :
if ($line =~ /controls{1,}0d+/) {
Tu devrais avoir une erreur ici (Search pattern not terminated at ...). De plus « s{1,} » est strictement équivalent à « s+ » (en moins lisible à mon goût).
/controls+0d+/
Sinon, il n'y a aucune raison pour que la ligne de commande et un script réagissent différemment.
-- Benoit Izac
Bonjour,
le 29/05/2006 à 12:49, ctobini a écrit dans le message
<1148899744.955536.60480@g10g2000cwb.googlegroups.com> :
if ($line =~ /controls{1,}0d+/) {
Tu devrais avoir une erreur ici (Search pattern not terminated at ...).
De plus « s{1,} » est strictement équivalent à « s+ » (en moins
lisible à mon goût).
/controls+0d+/
Sinon, il n'y a aucune raison pour que la ligne de commande et un
script réagissent différemment.
le 29/05/2006 à 12:49, ctobini a écrit dans le message :
if ($line =~ /controls{1,}0d+/) {
Tu devrais avoir une erreur ici (Search pattern not terminated at ...). De plus « s{1,} » est strictement équivalent à « s+ » (en moins lisible à mon goût).
/controls+0d+/
Sinon, il n'y a aucune raison pour que la ligne de commande et un script réagissent différemment.