Optimiser / remplacer une commande awk
Résolu
bob737
Messages postés
157
Statut
Membre
-
bob737 Messages postés 157 Statut Membre -
bob737 Messages postés 157 Statut Membre -
Bonjour,
Je dois rechercher une chaîne de caractère (un nom de serveur) dans un fichier FICHIER1 de 42 000 lignes
Pour chaque ligne du FICHIER1 :
awk -F';' 'BEGIN { IGNORECASE = 1 } $1 ~ /'$SERVEUR'/ {print $0}' FICHIER1 > FICHIER.TMP
Une fois trouvé les lignes que je mets dans un fichier TMP, je somme les valeurs de la 5eme colonne de ces lignes.
awk -F";" '{total += $5} END{print total;}' FICHIER.TMP
... puis je traite d'autres DATA de ce serveur qui sont dans un second fichier FICHIER2 de 100 000 lignes.
VAR2=$(awk -F";" '{total += $7 } END{print total;}' FICHIER2
VAR3=$(awk -F";" '{total += $8 } END{print total;}' FICHIER2
Je vous passe le formatage du résultat mais c'est très long (à peu près 1 seconde) par serveur et j'ai 24 000 serveurs.
Une idée pour optimiser ? Merci !
;-)
3 réponses
-
hello
on peut regrouper
awk -F';' -v s="$SERVEUR" 'BEGIN {IGNORECASE=1} $1 ~ s {total += $5} END{print total;}' FICHIER1 > FICHIER.TMPet
read VAR2 VAR3 < <(awk -F";" '{t7+=$7; t8+=$8 } END{print t7, t8}' FICHIER2) -
Bonjour,
Tu charges les données dans une base de données et tu effectues des requêtes SQL
-