Awk-perl
Résolu
karim_khouja
Messages postés
50
Date d'inscription
Statut
Membre
Dernière intervention
-
karim_khouja Messages postés 50 Date d'inscription Statut Membre Dernière intervention -
karim_khouja Messages postés 50 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un fichier hexadécimal le séparateur de chaque mot hexa et "|"
je voulais extraire des mots specifiques
en fait, c'est fichier tres long qui ressemble a celui de Wireshark l'or d'un enregistrement *.txt
je voulais tester $44
cat /home/../Bureau/hexa.txt | awk -F| `BEGIN {NR=4; int Nseq=0;int num=0;}
{
if( $44!="60")
{num = NR; Nseq =strcat($45,$46); NR=NR+32;}
else
{num = NR; NR=NR+33;}
}
END {print num " " Nseq}`>>/home/../Bureau/rtp.txt
ce code je veux l'introduire dans le script perl
puis-je le faire et comment ?
y a t-il des fautes dans ce bout de code svp?
merci bcp
j'ai un fichier hexadécimal le séparateur de chaque mot hexa et "|"
je voulais extraire des mots specifiques
en fait, c'est fichier tres long qui ressemble a celui de Wireshark l'or d'un enregistrement *.txt
je voulais tester $44
cat /home/../Bureau/hexa.txt | awk -F| `BEGIN {NR=4; int Nseq=0;int num=0;}
{
if( $44!="60")
{num = NR; Nseq =strcat($45,$46); NR=NR+32;}
else
{num = NR; NR=NR+33;}
}
END {print num " " Nseq}`>>/home/../Bureau/rtp.txt
ce code je veux l'introduire dans le script perl
puis-je le faire et comment ?
y a t-il des fautes dans ce bout de code svp?
merci bcp
A voir également:
- Awk-perl
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- Perl exec - Forum Perl
- Awk dédoublonner un print ✓ - Forum Shell
- Perl et Variable - Forum Perl
75 réponses
j'ai parcouru le tableau fec et j'ai fait une condition
si $fec[$i=1]-$fec[$i] == 33 car je cherche le premier saut de 33 pas car le tableau contient des numero consecutive et puis il fait un saut de 33 chaque fois
expl @fec: [1,2,3,4,5,6,7,8,41,42,43,44,45,46,47,48,81,82....]
j'ai mis [1,41,81...] dans un tableau que j'ai appeler @A se sont les tetes de Matrice
j'ai initialiser une valeur $SNBL = $A[5] ==> je vais prendre une tete de matrice quelquonque du tableau @A
maintenant je veux parcourir le tableau @rtp et chercher dans sont contenu une valeur egale a $A[5]
il va le trouver surement
mais je veux avoir dans un dernier tableau resultat toutes les valeurs allant de $SNBL jusqu'a $SNBL+39
ce tableau contient tout les elements de la matrice rtp mais a cette matrice on va trouver aussi 8 ou plus rtp perdus
normalement je vais trouver 32 valeurs mais pas toujours
si $fec[$i=1]-$fec[$i] == 33 car je cherche le premier saut de 33 pas car le tableau contient des numero consecutive et puis il fait un saut de 33 chaque fois
expl @fec: [1,2,3,4,5,6,7,8,41,42,43,44,45,46,47,48,81,82....]
j'ai mis [1,41,81...] dans un tableau que j'ai appeler @A se sont les tetes de Matrice
j'ai initialiser une valeur $SNBL = $A[5] ==> je vais prendre une tete de matrice quelquonque du tableau @A
maintenant je veux parcourir le tableau @rtp et chercher dans sont contenu une valeur egale a $A[5]
il va le trouver surement
mais je veux avoir dans un dernier tableau resultat toutes les valeurs allant de $SNBL jusqu'a $SNBL+39
ce tableau contient tout les elements de la matrice rtp mais a cette matrice on va trouver aussi 8 ou plus rtp perdus
normalement je vais trouver 32 valeurs mais pas toujours
Re,
Ben, il suffit de prendre des tranches de tableaux en ce cas.
Il suffit de faire par exemple
106485010510997108
Ben, il suffit de prendre des tranches de tableaux en ce cas.
Il suffit de faire par exemple
my @test = @A[$NBL .. ($NBL+39)];--
106485010510997108
Re,
Si j'ai bien compris c'est ça que tu veux (le résultat en gras)
Si j'ai bien compris c'est ça que tu veux (le résultat en gras)
lami20j@debian:~$ cat tranche.pl #!/usr/bin/perl use strict;use warnings; my @fec=(1,2,3,4,5,6,7,8,41,42,43,44,45,46,47,48,81,82,83,84,85,86,87,88); my $test=41; my $i; foreach (@fec){ ++$i; last if($_==$test); } my @control=@fec[--$i .. $i + 7]; print "@control\n"; __END__ lami20j@debian:~$ perl tranche.pl 41 42 43 44 45 46 47 48 lami20j@debian:~$
nn c'est presque
mais je voudrai avoir : 41 42 43 44 45 46 47 48...79 du tableau @rtp
c'est a dire du [41 a 41+39]
malgre qu'il y a des numero dans ce intervall qui n'existe pas (8 numero perdu ou plus parfois)
mais je voudrai avoir : 41 42 43 44 45 46 47 48...79 du tableau @rtp
c'est a dire du [41 a 41+39]
malgre qu'il y a des numero dans ce intervall qui n'existe pas (8 numero perdu ou plus parfois)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
mais je voudrai avoir : 41 42 43 44 45 46 47 48...79 du tableau @rtp
c'est a dire du [41 a 41+39]
Qui ou quoi t'empêche de prendre mon exemple et faire (au lieu de @fec, tu mets @rtp)
mais je voudrai avoir : 41 42 43 44 45 46 47 48...79 du tableau @rtp
c'est a dire du [41 a 41+39]
Qui ou quoi t'empêche de prendre mon exemple et faire (au lieu de @fec, tu mets @rtp)
@rtp[--$i .. $i + 38];?!!
GTK2 est mon bibliotheque graphique de perl
j'ai remarqué que perl n'accepte pas cette instruction : $label$i
en fait je suis entrain de construire des label dynamiquement a l'aide d'une boucle for
mais je rencontre une erreur de compilation
j'ai remarqué que perl n'accepte pas cette instruction : $label$i
en fait je suis entrain de construire des label dynamiquement a l'aide d'une boucle for
mais je rencontre une erreur de compilation
ou bien autrement :
supposant j'ai ce tableau : 1,2,3,7,8,12
je veux avoir un tableau comme ca 1,2,3,0,0,0,7,8,0,0,0,12
le contenu du tableau est trié deja
et je veux avoir au lieu des numeros perdus des zeros
supposant j'ai ce tableau : 1,2,3,7,8,12
je veux avoir un tableau comme ca 1,2,3,0,0,0,7,8,0,0,0,12
le contenu du tableau est trié deja
et je veux avoir au lieu des numeros perdus des zeros
Salut,
J'en suis sûr que c'est urgent. Toutefois avec une telle invocation, tu risques plutôt de ne pas avoir une réponse.
N'oublie pas que nous sommes de bénévoles, et chacun a aussi une vie à côté.
Tu as vraiment de la chance d'avoir la réponse assez rapidement.
J'en suis sûr que c'est urgent. Toutefois avec une telle invocation, tu risques plutôt de ne pas avoir une réponse.
N'oublie pas que nous sommes de bénévoles, et chacun a aussi une vie à côté.
Tu as vraiment de la chance d'avoir la réponse assez rapidement.
lami20j@debian:~$ cat tableau_zero.pl #!/usr/bin/perl use strict;use warnings; my $i; my @tab=(1,2,3,7,8,12,20,24,29); my @res=push my @tmp,shift @tab; while(@tab){ push @tmp,(my $e=shift @tab); my $decalage = ($e - $tmp[$i++]); if($decalage>1){push @res,0 for 1..$decalage - 1} push @res,$e; } @tmp=(); print "@res\n"; __END__ lami20j@debian:~$ perl tableau_zero.pl 1 2 3 0 0 0 7 8 0 0 0 12 0 0 0 0 0 0 0 20 0 0 0 24 0 0 0 0 29
merci infinement
tu es genial Mr Lami
et je m'excuse , je sais que je t'ai dérangé pas mal de fois
et c'est grace a dieu qui m'a offert une telle personne geniale et gentille pour m'aider et pour me permettre de terminer cette tache.
merci bcp mille fois
tu es genial Mr Lami
et je m'excuse , je sais que je t'ai dérangé pas mal de fois
et c'est grace a dieu qui m'a offert une telle personne geniale et gentille pour m'aider et pour me permettre de terminer cette tache.
merci bcp mille fois
Salut,
Je n'ai pas trop aimé la 1ère version.
Voici une autre aproche (merci à jipicy pour les tests
Je n'ai pas trop aimé la 1ère version.
Voici une autre aproche (merci à jipicy pour les tests
lami20j@debian:~$ cat tableau_zero2.pl #!/usr/bin/perl use strict;use warnings; my @tab=(1,2,3,7,8,12,20,24,29); my @res=(0) x $tab[$#tab]; $res[$_-1]=$_ for @tab; print "@tab\n"; print "@res\n"; lami20j@debian:~$ perl tableau_zero2.pl ro2.pl 1 2 3 7 8 12 20 24 29 1 2 3 0 0 0 7 8 0 0 0 12 0 0 0 0 0 0 0 20 0 0 0 24 0 0 0 0 29
salut Mr Lami pouvez vous m'aider une derniere fois ?
j'ai deux tableaux
exp
@a=(1,2,3,4,5,6,7,8,9,10)
@b=(3,5,6,7)
je veux eliminer le contenu de @b du @a
c a d @a doit contenir @a=(1,2,4,8,9,10)
j'ai deux tableaux
exp
@a=(1,2,3,4,5,6,7,8,9,10)
@b=(3,5,6,7)
je veux eliminer le contenu de @b du @a
c a d @a doit contenir @a=(1,2,4,8,9,10)
Salut,
une derniere fois ?
Si je comprends bien, si jamais tu as encore de questions je ne te répondrai plus. ;-DDDDD
une derniere fois ?
Si je comprends bien, si jamais tu as encore de questions je ne te répondrai plus. ;-DDDDD
lami20j@debian:~/trash/ccm_perl$ cat ccm_que_dans_a.pl #!/usr/bin/perl use strict;use warnings; my (@a,@b,@que_dans_a,%dans_b); @a=(1,2,3,4,5,6,7,8,9,10); @b=(3,5,6,7); @dans_b{@b}=(); for(@a){push @que_dans_a,$_ unless exists $dans_b{$_}}; print "@a\n@b\n"; print "@que_dans_a\n"; __END__ lami20j@debian:~/trash/ccm_perl$ perl ccm_que_dans_a.pl 1 2 3 4 5 6 7 8 9 10 3 5 6 7 1 2 4 8 9 10
my (@mat_ERR, %dans_sans_err);
@dans_sans_err{@num_Mat_sans_err}=();
for (@num_Mat_errAA){push @mat_ERR, $_ unless exists $dans_sans_err{$_}};
print"@mat_ERR\n";
il m'a donner un resultat inverse je sais pas pourquoi
sachant que @a=@num_Mat_errAA et @b=@dans_sans_err
merci Mr mais je t'ai déranhé énormement
t'es tres tes gentil
Merci bcp
@dans_sans_err{@num_Mat_sans_err}=();
for (@num_Mat_errAA){push @mat_ERR, $_ unless exists $dans_sans_err{$_}};
print"@mat_ERR\n";
il m'a donner un resultat inverse je sais pas pourquoi
sachant que @a=@num_Mat_errAA et @b=@dans_sans_err
merci Mr mais je t'ai déranhé énormement
t'es tres tes gentil
Merci bcp
Re,
Attention, @b c'est @num_Mat_sans_err
@dans_sans_err n'est pas un tableau. En revanche on a le hash %dans_sans_err
Bref,
@a il faut le remplacer avec @num_Mat_errAA
@b il faut le remplacer avec @num_Mat_sans_err
Donc les tableau que tu compares sont
@num_Mat_errAA et @num_Mat_sans_err
et pas
@num_Mat_errAA et @dans_sans_err
Attention, @b c'est @num_Mat_sans_err
@dans_sans_err n'est pas un tableau. En revanche on a le hash %dans_sans_err
Bref,
@a il faut le remplacer avec @num_Mat_errAA
@b il faut le remplacer avec @num_Mat_sans_err
Donc les tableau que tu compares sont
@num_Mat_errAA et @num_Mat_sans_err
et pas
@num_Mat_errAA et @dans_sans_err
Re,
Pour vérifier il suffit d'afficher les tableaux
Pour vérifier il suffit d'afficher les tableaux
print "@num_Mat_errAA\n"; print "@num_Mat_sans_err\n"; print "@mat_ERR\n";
salut Mr Lami
merci pour la reponse d'hier j'été trop fatigué c'est pourquoi il m'a paru que les resultats sont fausse mais j'ai mis le bon code dés le début.
j'ai un probleme Mr
supposons que j'ai un tableau
my @Tfin=(1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,0,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, 41,42,43,44,45,46,47,48,49,50,51,52,0,0,55,56,57,58,59,60,61,62,63,0,0,0,0,0,0,0,0,72,73,74,75,76,77,78,79,80);
je vais analyser 40 element par 40 a part : (analyser le tableau du [1 .. 40] puis [41..80]...)
je trouve 8 et seulement 8 zeros consécutives dans chaque 40 elements on affecte a un autre tableau un numero d'indice de sous tableau expl: pour les 40 premiere leurs indice est 40/40=1 , le deuxieme 80/40=2, ...
ici le premier sous tableau est faux car on a seulement 8 zeros consecutives
tandisque le deuxieme sous tableau est vrai car il possedes 8 zero consécutives + 2 autres zero
je sais que je m'exprime mal mais si jamais vous avez besoin d'une information
please n'hesitez pas
je vous en pris Mr
Merci infinement
merci pour la reponse d'hier j'été trop fatigué c'est pourquoi il m'a paru que les resultats sont fausse mais j'ai mis le bon code dés le début.
j'ai un probleme Mr
supposons que j'ai un tableau
my @Tfin=(1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,0,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, 41,42,43,44,45,46,47,48,49,50,51,52,0,0,55,56,57,58,59,60,61,62,63,0,0,0,0,0,0,0,0,72,73,74,75,76,77,78,79,80);
je vais analyser 40 element par 40 a part : (analyser le tableau du [1 .. 40] puis [41..80]...)
je trouve 8 et seulement 8 zeros consécutives dans chaque 40 elements on affecte a un autre tableau un numero d'indice de sous tableau expl: pour les 40 premiere leurs indice est 40/40=1 , le deuxieme 80/40=2, ...
ici le premier sous tableau est faux car on a seulement 8 zeros consecutives
tandisque le deuxieme sous tableau est vrai car il possedes 8 zero consécutives + 2 autres zero
je sais que je m'exprime mal mais si jamais vous avez besoin d'une information
please n'hesitez pas
je vous en pris Mr
Merci infinement
Salut,
Tu veux faire quoi?
Afficher faux quand il y a seulement 8 zéros et vrai quand il plus de huit zéros?
Tu veux faire quoi?
Afficher faux quand il y a seulement 8 zéros et vrai quand il plus de huit zéros?
lami20j@debian:~/trash$ cat vraifaux.pl #!/usr/bin/perl use strict;use warnings; my @Tfin=(1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,0,18,19, 20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,38,39, 40,41,42,43,44,45,46,47,48,49, 50,51,52,0,0,55,56,57,58,59, 60,61,62,63,0,0,0,0,0,0,0,0, 72,73,74,75,76,77,78,79,80); print "FAUX\n" if (scalar grep { /^0$/ } @Tfin[0 .. 39]) == 8; print "VRAI\n" if (scalar grep { /^0$/ } @Tfin[40 .. 79]) == 10; __END__ lami20j@debian:~/trash$ lami20j@debian:~/trash$ perl vraifaux.pl FAUX VRAI
non quand il y a 8 zero et les zero sont consécutives afficher faut
exemple :
1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,0,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 faut
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,0,0,0,0,0,0,0,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 faut
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,0,0,0,0,0,0,0,0 faut
la position n'importe mais les zeros doit etre 8 et consecutives
merci bcp
exemple :
1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,0,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 faut
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,0,0,0,0,0,0,0,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40 faut
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,0,0,0,0,0,0,0,0 faut
la position n'importe mais les zeros doit etre 8 et consecutives
merci bcp
Re,
Je ne comprends pas.
Montre ton exemple sur le tableau que tu m'as donné.
Je ne comprends pas.
Montre ton exemple sur le tableau que tu m'as donné.
my @Tfin=(1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,0,18,19, 20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,38,39, 40,41,42,43,44,45,46,47,48,49, 50,51,52,0,0,55,56,57,58,59, 60,61,62,63,0,0,0,0,0,0,0,0, 72,73,74,75,76,77,78,79,80);