Traitement du fichier de stats boinc... [awk/sed] - Shell/Batch - Programmation
Marsh Posté le 11-06-2004 à 12:27:00
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, 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