Optimiser / remplacer une commande awk
Résolu
bob737
Messages postés
144
Date d'inscription
Statut
Membre
Dernière intervention
-
bob737 Messages postés 144 Date d'inscription Statut Membre Dernière intervention -
bob737 Messages postés 144 Date d'inscription Statut Membre Dernière intervention -
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 !
;-)
A voir également:
- Optimiser / remplacer une commande awk
- Optimiser son pc - Accueil - Utilitaires
- Invite de commande - Guide
- Commande terminal mac - Guide
- Remplacer disque dur par ssd - Guide
- Remplacer word - Guide
3 réponses
hello
on peut regrouper
awk -F';' -v s="$SERVEUR" 'BEGIN {IGNORECASE=1} $1 ~ s {total += $5} END{print total;}' FICHIER1 > FICHIER.TMP
et
read VAR2 VAR3 < <(awk -F";" '{t7+=$7; t8+=$8 } END{print t7, t8}' FICHIER2)
C'est plus propre. Merci.
Modifié par mamiemando le 14/04/2023 à 14:01
qu'est ce qui a été modifié ?
Bonjour,
Ta seconde proposition. ;-)