PERL - Calcul colonne de deux fichiers
Résolu/Fermé
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
-
9 mars 2010 à 12:50
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 9 mars 2010 à 16:25
wafa_o Messages postés 109 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 4 janvier 2011 - 9 mars 2010 à 16:25
A voir également:
- PERL - Calcul colonne de deux fichiers
- Déplacer une colonne excel - Guide
- Calcul moyenne excel - Guide
- Formule somme excel colonne - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
15 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
9 mars 2010 à 13:17
9 mars 2010 à 13:17
hello
et avec awk ?
et avec awk ?
$ head a1 a2 ==> a1 <== Machine1 01 100104 155076 Machine2 01 100105 153820 Machine2 01 100106 187736 Machine2 01 100107 180004 Machine3 01 100108 157936 ==> a2 <== Machine1 01 100104 175820 Machine2 01 100105 201532 Machine2 01 100106 458213 Machine2 01 100107 123650 Machine3 01 100108 136258 $ $ cat a2 a1 |awk '{if(y=x[$1,$3])printf("%s %s %s %-8.2f\n", $1, $2, $3, (y/$4)*100);else x[$1,$3]=$4}' Machine1 01 100104 113.38 Machine2 01 100105 131.02 Machine2 01 100106 244.07 Machine2 01 100107 68.69 Machine3 01 100108 86.27 $
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 14:25
9 mars 2010 à 14:25
Ca fonctionne seulement je voudrais réaliser que ce soit fait en script PERL ....
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 15:11
9 mars 2010 à 15:11
J'ai essayé ca ....
open (output, ">>essai") or die "Probleme ouverture:$!\n";
system("cat a2 a1 |awk '{if(y=x[$1,$3])print ouput ("%s %s %s %-8.2f\n", \$1, \$2, \$3, (y/$4)*100);else x[$1,$3]=$4}'");
close (output);
Mais ca ne fonctionne pas.
Help please.
open (output, ">>essai") or die "Probleme ouverture:$!\n";
system("cat a2 a1 |awk '{if(y=x[$1,$3])print ouput ("%s %s %s %-8.2f\n", \$1, \$2, \$3, (y/$4)*100);else x[$1,$3]=$4}'");
close (output);
Mais ca ne fonctionne pas.
Help please.
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
9 mars 2010 à 15:19
9 mars 2010 à 15:19
salut ,
tu multiplies par 100 apres c est ca ?
tu multiplies par 100 apres c est ca ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 15:22
9 mars 2010 à 15:22
Salut, oui c'est ca, je divise et je multiplie par 100.
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
9 mars 2010 à 15:35
9 mars 2010 à 15:35
Ca arrive mais il y a quelques choses qui m'embête, tu es sur que l'avant derniere colonne est la date et non le Numéro de ref, car la, toutes tes machines ont le meme numero de ref....
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
9 mars 2010 à 15:44
9 mars 2010 à 15:44
Ok, concernant les contraintes :
tu veux du ligne par ligne "je prend la ligne 1 de fic1 et je bosse sur la ligne 1 du fic2" ou je me sert de la date en considérant celle ci comme unique ?
tu veux du ligne par ligne "je prend la ligne 1 de fic1 et je bosse sur la ligne 1 du fic2" ou je me sert de la date en considérant celle ci comme unique ?
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 15:47
9 mars 2010 à 15:47
En fonction de la date, il vaut mieux être prudent ;)
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
9 mars 2010 à 15:48
9 mars 2010 à 15:48
$ perl -e "system('cat a2 a1 |awk \'{if(y=x[\$1,\$3])printf(\"%s %s %s %-8.2f\n\", \$1, \$2, \$3, (y/\$4)*100);else x[\$1,\$3]=\$4}\'')" Machine1 01 100104 113.38 Machine2 01 100105 131.02 Machine2 01 100106 244.07 Machine2 01 100107 68.69 Machine3 01 100108 86.27 $ $
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
9 mars 2010 à 15:58
9 mars 2010 à 15:58
joli, mais bon tu triches un peu quand même ^^
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
>
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
9 mars 2010 à 16:01
9 mars 2010 à 16:01
oui, mais c'était pour répondre au post #3
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
>
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
9 mars 2010 à 16:03
9 mars 2010 à 16:03
bon, ca va alors... mais que je t'y reprenne plus !
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 16:25
9 mars 2010 à 16:25
Merci pour ton aide dubcek.
Je vais utiliser le code de fxtaa.
Je vais utiliser le code de fxtaa.
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
9 mars 2010 à 15:55
9 mars 2010 à 15:55
open(FILE, "<bil1.txt"); while(<FILE>){ push(@lignes,$_); } close(FILE); $/ = "66210-34" ; open ( FILE , "<bil2.txt" ); my $fic2 = <FILE> ; close ( FILE ) ; $/ = "\n"; for(@lignes){ $fic1 = $_; if ($fic1 =~ /(Machine\d* \d*) (\d*) (\d*)/){ $reste = $1; $id1 = $2; $value1 = $3; if ($fic2 =~ /Machine\d* \d* $id1 (\d*)/){ $value2 = $1; $result = $value2 / $value1; $result *= 100; print "$reste $id1 $result\n"; } } }
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 16:07
9 mars 2010 à 16:07
Il ne me reste plus qu'à comprendre quelques unes de tes lignes:
Tu peux m'expliquer ?
$/ = "66210-34" ;
Tu peux m'expliquer ?
$/ = "66210-34" ;
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 16:16
9 mars 2010 à 16:16
Merciiiiiiiiiiiiiiii beaucoup. Je l'ai adapté car le nom des machines changeait.
Une épine de mon pied en moins :)
Une épine de mon pied en moins :)
fxtaa
Messages postés
1050
Date d'inscription
mardi 20 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2015
74
9 mars 2010 à 16:17
9 mars 2010 à 16:17
Au risque de te décevoir je me souviens plus trop, c est une astuce que j'ai trouvé dans un vieux code et qui est vachement pratique !
Ça permet d'avoir tout le contenu d'un fichier dans un variable type $. Si je me trompe le "66210-34" est une valeur qui lorsqu'elle est atteinte entraine un retour à la ligne. (je suis aller chercher sur google j'ai rien trouvé...)
Ça permet d'avoir tout le contenu d'un fichier dans un variable type $. Si je me trompe le "66210-34" est une valeur qui lorsqu'elle est atteinte entraine un retour à la ligne. (je suis aller chercher sur google j'ai rien trouvé...)
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 16:24
9 mars 2010 à 16:24
Ok je regarderai de mon côté si je trouve quelque chose sinon tant pis.
Au point où j'en suis, je vais pas être difficile :)
Bonne fin de journée
Au point où j'en suis, je vais pas être difficile :)
Bonne fin de journée
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
9 mars 2010 à 15:39
9 mars 2010 à 15:39
Si je confirme l'avant dernière colonne correspond à la date.
Ici le n° de ref ( je l'ai appelé comme ca) mais ce numéro de référence est le numéro de semaine ...
Je te remercie pour ton aide fxtaa
Ici le n° de ref ( je l'ai appelé comme ca) mais ce numéro de référence est le numéro de semaine ...
Je te remercie pour ton aide fxtaa