|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : février 2008 Messages : 12 ![]() |
Bonjour,
Voici les données en question chaque variable (EC,QD,DP,HP) Contiennnent le même nombre d'éléments (+-500 en liste) et j'aimerais fusionner ces données pour obtenir un fichier de sortie formaté comme tel EC,QD,DP,HP EC,QD,DP,HP EC,QD,DP,HP EC,QD,DP,HP ... JE ne vois pas vraiment comment procéder donc je fais appel a vos lumières Code :
J'espère avoir été suffisament précis dans ma requête ... Merci d'avance |
||
|
|
10
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
la source est toujours la même (qmmdead.txt), qui est probablement un fichier temporaire, et inutile : tu devrais 'piper' la sortie de la commande qmm dis $Qmgr:MANAGE.DEAD.QUEUE detail vers une commande awk, qui formatera ça très proprement, plutôt qu'un tas de grep | sed consommateur de ressources et tout moche. Il y a un tutoriel gawk, ici. |
|
|
20
|
|
|
#3 | |
|
Expert Confirmé Sénior
![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 055 ![]() |
Citation:
Ce serait bien d'avoir un petit exemple du fichier entrée...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|
|
|
20
|
|
|
#4 | ||||||||
|
Futur Membre du Club
![]() Inscription : février 2008 Messages : 12 ![]() |
Voici un ex de qmmdead.txt
Code :
EC = Code :
HP = QD = Code :
Code :
|
||||||||
|
|
10
|
|
|
#5 | ||||
|
Membre habitué
![]() Étudiant Inscription : août 2011 Messages : 46 ![]() |
Code :
j'aurais plutot utilisé : Code :
J'ai corrigé une erreur... (j'avais fais ça à l'arrache désolé)
__________________
Carpe Diem |
||||
|
|
30
|
|
|
#6 |
|
Futur Membre du Club
![]() Inscription : février 2008 Messages : 12 ![]() |
Merci pour ta réponse ...
Malheureusement j'ai du mal a suivre le code que tu as donné. J'avais d'abord tenté 4 boucles while imbriquées mais il semble que lorsqu'il arrive au dernier mot de la derniere variable il recommence au début ... => kill obligatoire Alors pardonnes mon ignorance(ignardise) mais j'ai du mal à interpreter le morceau de code que tu as mis. Peux-tu m'expliquer un peu ? ![]() Merci d'avance Bien à toi |
|
|
10
|
|
|
#7 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Juste une proposition... Si au lieu de créer 4 variables tu créais 4 fichiers, il serait alors plus facile de passer le tout à la moulinette "paste" (éventuellement coupler à sed pour la mise en forme) ? Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
20
|
|
|
#8 | |||
|
Membre habitué
![]() Étudiant Inscription : août 2011 Messages : 46 ![]() |
Citation:
-D'abord c'est du bash, je ne suis pas sûr des compatibilités avec d'autres langages. -la boucle while read; do... done < <(commande) lit le retour de la commande et place chaque ligne dans la variable $REPLY (la lecture se fait ligne par ligne, un ligne par itération). Normalement, une fois toutes les lignes lus, elle devrait s'arreter... À un temps t, on aurait donc par exemple $REPLY="Message lifetime in tenths of seconds . . : Unlimited" -Comme on veut juste récupérer certaines infos, on compare $REPLY à un motif et si on retrouve le motif, on stock la partie voulue (après ":") grace à la substitution ${var##*: } qui va tout supprimer jusqu'au dernier ": " dans l'exemple précédent, on aura ${REPLY##*: }="Unlimited" j'en profite pour stocker les données dans des tableaux afin de les ranger facilement et proprement dans le fichier.log. Par contre j'ai limité la boucle for...done à 3 occurences pour correspondre à ton exemple mais il faudra surement adapter pour un nombre variable en comptant le nombre d'éléments dans une des listes HP, QD...
__________________
Carpe Diem |
|||
|
|
30
|
|
|
#9 | ||||
|
Futur Membre du Club
![]() Inscription : février 2008 Messages : 12 ![]() |
Un grand merci a vous 2
Cependant il me reste un problème sachant qu'il peut y avoir jusqu'a 10000 ou 20000 messages voir plus j'obtiens ce message d'erreur Code :
./mailer.ksh[13]: 0403-029 There is not enough memory available now. Code :
Lorsque j'utilise une Queue qui ne contient que 3 messages pour tester j'obtiens ceci Code :
|
||||
|
|
10
|
|
|
#10 | |||
|
Membre habitué
![]() Étudiant Inscription : août 2011 Messages : 46 ![]() |
Citation:
Idem pour l'initialisation des tableaux. Pourquoi avoir remplacé par ' EC="";QD="";DP="";HP="" ' ? Edit : ok pour les tableaux la notation n'est pas la même que en bash, je croyais qu'on devait cependant ecrire : Code :
set -A EC ; set -A QD ; set -A DP ; set -A HP Edit 2 : essaye de remplacer par Edit 3 : Tu as aussi modifié la redirection de la boucle while... Je ne suis même pas sûr que ça puisse marcher ainsi. en bash c'est while read;do ... done < <(commande) à voir avec les pros du ksh pour régler ça.
__________________
Carpe Diem |
|||
|
|
30
|
|
|
#11 | ||
|
Membre habitué
![]() Étudiant Inscription : août 2011 Messages : 46 ![]() |
Je double post pour proposer une version fonctionnelle sous ksh :
Code :
__________________
Carpe Diem |
||
|
|
30
|
|
|
#12 | ||||||
|
Futur Membre du Club
![]() Inscription : février 2008 Messages : 12 ![]() |
tout d'abord un tout grand merci à toi pour ce suivi
c 'est génial !Mais voila je viens de tester ta procédure modifiée Code :
premier run Code :
donc je remplace par {0..$(($Nbrmess-1))} qui devrait me donner le nombre de ligne dans le fichier en commencant à 0 j'arrange le soucis en plaçant des `` dans le while Code :
ca semble mieux mais il ya toujours un soucis et j'ai beau retourner le tout je me demande ou cette erreur de syntax se trouve .... keep searching solution Quoi qu'il en soit encore un tout grand merci pour ton aide! |
||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com