Traitement du fichier de stats boinc... [awk/sed] - Shell/Batch - Programmation
Marsh Posté le 11-06-2004 à 12:27:00
 ![[:belgarion_cer] [:belgarion_cer]](https://forum-images.hardware.fr/images/perso/belgarion_cer.gif) de soutien d'un ignare absolu dans ce domaine
 de soutien d'un ignare absolu dans ce domaine 
Marsh Posté le 14-06-2004 à 00:44:13
C'est pas faux, mais je pense que ca sera pas aussi rapide, d'autre part, sur mon serveur ovh, je n'ai pas perl (quoi que, c'est un serveur dedié ...  
  ), donc, je pourrais le mettre, mais bon
), donc, je pourrais le mettre, mais bon  
 
Donc, des commandes unix de bases, ca serait pas mal en fait. 
 
Petite question, je n'ai jamais réussi avec 'sed' à enlever les fin de lignes. Les remplacer, oui, les enlever, non  
 
 
Genre un sed 's/\n//g' fichier   ca marche pas. 
 
C'est pour mettre tout le ficher en une seule ligne par exemple. 
 
Merci pour tout debut de soluce.
Marsh Posté le 14-06-2004 à 00:48:59
| Taz a écrit : un coup de perl et on en parle plus  | 
 
 
+1
Marsh Posté le 14-06-2004 à 11:56:05
| Taz a écrit : fais le en php avec des regex  | 
 
C'est ce que je fait habituellement sur le fichier de Boinc Astropulse, qui ne fait que 4 Mo. Là, 900 Mo, le serveur va exploser  
 
Bon, enfin, si vous le dites... vous n'avez pas l'air d'apprecier l'idée d'un prétraitement en C  
 
 
Je vais rester avec mes commandes unix 
Marsh Posté le 16-06-2004 à 09:36:11
Bonjour 
je te propose cette piste :  
avec awk on peut redefinir le separateur de champ et de ligne 
ex classique : \n pour séparer les champs et \n\n (ligne vide) pour la fin d'enregistrement 
 
si ton fichier a cette structure (ligne vide pour separer chaque enregistrement, tu peux ecrire ce genre de truc : 
nawk  'BEGIN{FS='\x0a';RS='\x0a\x0a'} $7 !~ />[0\.]+</ {print ;}' fichier 
(Avec ma version de awk j'ai du remplacer \n par \x0a) 
qui t'affiche chaque enregistrement ou le champ 7 ne contient pas qque chose d'un montant constitué de 0 et de . 
 
Salut
Marsh Posté le 16-06-2004 à 11:23:07
lol, quel bourrin  
 
En plus tu dois avoir des lib pour parser du xml proprement. 
Je regarde une solution en awk
Marsh Posté le 16-06-2004 à 11:28:18
awk ' 
BEGIN { credit=1; user=""; } 
{ user = user $0 "\n"; } 
/<\/user>/ { if (credit!=0) { printf ("%s", user); } credit=1; user=""; } 
/<total_credit>0.00/ { credit=0; } 
' 
Marsh Posté le 18-06-2004 à 09:33:21
| ArSuniK a écrit : awk '  | 
 
Merci à tous, je vais regarder ca cet aprem'. J'ai réécrit mon script en perl, ca va nettement plus vite qu'en php, mais ca met encore 10 bonne minutes pour les 900 mo. Merci 
Marsh Posté le 10-06-2004 à 22:28:41
Bonjour 
 
 
  
Le fichier de stats de Berkeley pour boinc est assez enorme dans la version Seti2. Genre 900 Mo, avec plein d'infos inutiles
Du coup, j'essaye de le nettoyer un peu, en enlevant les personnes qui sont à zéro. En gros, le fichier donne ca :
Certains sont à 0.000000 en total_credit par exemple.
Ma méthode à moi bourrin que j'ai :
tr -d '\n' < fichier >sortie
sed -i 's#</user>#</user>\n#g' sortie
grep -v '0.0000000' sortie
pour n'avoir que les personnes ayant un scores différent de 0.00000
J'ai prevenu, c'est bourrin...
Je me dit qu'avec awk, il y a moyen de faire plus propre. Autant je maitrise un peu sed et grep, autant là, j'ai beaucoup de mal.
Le but est de remplir une base sql. Elle permettrait de faire pour Seti2, ce que je fait dejà pour Astropulse : http://stats.boinc.fr
Merci beaucoup pour tout conseils ou piste
---------------
Da Breizh WoRlD DoMIna7iOn T3aM * Baptiste Mary blog