Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

regex en ligne de commande et script: résultat différent

4 réponses
Avatar
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 ?

En vous remerciant,

C=2E Tobini

4 réponses

Avatar
flav
slt,
tu as un fichier de test et les traces des résultats.
Avatar
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


Avatar
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




Avatar
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