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
je dois parcourir mon tableau 40 part 40 (chaque 40 a part) ( chaque 40 constitut une matrice c'est une chose comme ca)
il doit m'afficher :
*)la matrice 1 est fausse car j'ai 8 zeros consecutives et pas d'autres zeros
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
*)la matrice 2 est vrai car j'ai huit zero consécutive oui mais une fois je trouve d'autres zeros l'analyse devienne positive
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
il doit m'afficher :
*)la matrice 1 est fausse car j'ai 8 zeros consecutives et pas d'autres zeros
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
*)la matrice 2 est vrai car j'ai huit zero consécutive oui mais une fois je trouve d'autres zeros l'analyse devienne positive
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
Mr est ce que vous m'avez compris?
je te jure que je me suis trés pressé du temps
demain je vais présenter ma premiere partie et elle manque que cette condition
je te jure que je me suis trés pressé du temps
demain je vais présenter ma premiere partie et elle manque que cette condition
j'ai fait ce que tu m'a appris a faire mais reste une condition comment verifier que les zeros sont consécutives?
# !/usr/bin/perl -w
use strict;
use warnings;
my @A;
my @Tfin =(1,2,3,4,5,6,7,8,9,10,0,0,0,0,0,0,0,0,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,0,0,0,0,5,0,0,0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80);
for (my $i=0; $i<=$#Tfin; $i+=40)
{
my $b=($i/40)+1;
push @A,$b if (scalar grep {/^0$/} @Tfin[$i..$i+39])==8;
}
print"@A\n";
# !/usr/bin/perl -w
use strict;
use warnings;
my @A;
my @Tfin =(1,2,3,4,5,6,7,8,9,10,0,0,0,0,0,0,0,0,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,0,0,0,0,5,0,0,0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80);
for (my $i=0; $i<=$#Tfin; $i+=40)
{
my $b=($i/40)+1;
push @A,$b if (scalar grep {/^0$/} @Tfin[$i..$i+39])==8;
}
print"@A\n";
Re,
Ce n'est pas comme ça que je t'ai appris ;-)))
Attention, au contexte.
C'est vraiement inutile et tordue de faire my $b=($i/40)+1; quand on a déjà les éléments de tableau.
La solution que je t'ai donné traite les éléments de tableau quelque soit leur valeur.
Dans ton cas tu divises l'indice de tableau avec 40 et tu lui ajoute 1.
Mais ça ne marchera pas si tu auras d'autres valeurs dans le tableau.
Bref tu traites les valeurs.
C'est un peu comme sous Excel, travailler avec les cellules par adresse ou par contenu.
Une approche par adresse permet de rendre la solution acceptable quelque soit le contenu ce qui n'est pas le cas si on utilise des valeurs constantes.
Ma variante prends deux tranches de tableau, les 40 premiers éléments et la suite de 40 et ensuite teste s'il y a des zéros.
Le traitement des zéro consecutives suivis d'autre zéro peut poser des problèmes si on pense aux dizaines.
Et ton tableau et censé d'avoir que des données jusqu'à 80, ou il peut avoir des données plus grand que 100?
Ce n'est pas comme ça que je t'ai appris ;-)))
Attention, au contexte.
C'est vraiement inutile et tordue de faire my $b=($i/40)+1; quand on a déjà les éléments de tableau.
La solution que je t'ai donné traite les éléments de tableau quelque soit leur valeur.
Dans ton cas tu divises l'indice de tableau avec 40 et tu lui ajoute 1.
Mais ça ne marchera pas si tu auras d'autres valeurs dans le tableau.
Bref tu traites les valeurs.
C'est un peu comme sous Excel, travailler avec les cellules par adresse ou par contenu.
Une approche par adresse permet de rendre la solution acceptable quelque soit le contenu ce qui n'est pas le cas si on utilise des valeurs constantes.
Ma variante prends deux tranches de tableau, les 40 premiers éléments et la suite de 40 et ensuite teste s'il y a des zéros.
Le traitement des zéro consecutives suivis d'autre zéro peut poser des problèmes si on pense aux dizaines.
Et ton tableau et censé d'avoir que des données jusqu'à 80, ou il peut avoir des données plus grand que 100?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai arrivé maintenant a un petit resultat
mais si ca va marcher il faut que :
si je stocke dans un tableau par exemple les indices 1,3,6
il faut que j'efface les premiers 40 elements du tableau et les troisiemes 40 elements et les 6ieme 40 elements
y a t-il une solution facile?
mais si ca va marcher il faut que :
si je stocke dans un tableau par exemple les indices 1,3,6
il faut que j'efface les premiers 40 elements du tableau et les troisiemes 40 elements et les 6ieme 40 elements
y a t-il une solution facile?
Re,
Il y toujours des solutions, mais la facilité d'une solution depends de la compréhension du problème.
Je n'ai fait que te donner des morceaux de code.
Il y toujours des solutions, mais la facilité d'une solution depends de la compréhension du problème.
Je n'ai fait que te donner des morceaux de code.
dans toute les cas Merci beaucoup Mr Lami tu m'as bcp aidé
je te remercie infinement
ça y est j'ai trouver une solution maintenant et elle fonctionne correctement
je te remercie infinement
ça y est j'ai trouver une solution maintenant et elle fonctionne correctement
Re,
ça y est j'ai trouver une solution maintenant et elle fonctionne correctement
C'est parfait. Donc je n'ai plus rien à faire ;-))
ça y est j'ai trouver une solution maintenant et elle fonctionne correctement
C'est parfait. Donc je n'ai plus rien à faire ;-))
salut ,
j'ai terminer mais je te demande une solution s'il y on a
j'ai trois script perl maintenant bien faite, j'ai developper une interface graphique GTK2-perl
j'ai trois boutons radios, chaque bouton dois faire appel a un script
est ce que cette commande permet de faire cette tache efficacement?
system("/usr/bin/perl /path/to/my_script.pl ");
merci bcp
j'ai terminer mais je te demande une solution s'il y on a
j'ai trois script perl maintenant bien faite, j'ai developper une interface graphique GTK2-perl
j'ai trois boutons radios, chaque bouton dois faire appel a un script
est ce que cette commande permet de faire cette tache efficacement?
system("/usr/bin/perl /path/to/my_script.pl ");
merci bcp