IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Petit coup de main pour un petit script


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 50
    Points : 29
    Points
    29
    Par défaut Petit coup de main pour un petit script
    Bonjour a tous!

    Je dois faire du traitement sur un fichier sous linux, et je voulais utilisez du shellscript pour ce faire. Le probleme, c'est que je trouve pas comment faire efficacement Ca doit prendre 2 secondes a quelqu'un qui a l'habitude, mais mois je galere...

    Je vous explique:
    J'ai un fichier, qui contient x lignes de ce type:
    20101108094218:1634:l:172.20.140.128:Fedora_exam:-

    Je voudrais faire l'addition des nombres situes dans la deuxième colonne, a partir d'une date situe dans la première colonne. (apres 20100921000000 en gros, c'est YYYYMMDDHHMMSS).

    en gros un truc du genre (en moche) :

    A partir de 2010092100000 (col1),
    while (!EOF)
    {i = i + col2;}


    Merci d'avance pour les aides que je pourrais recevoir.


    Cordialement,
    Baradhur.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    bonjour,

    tu sais qu'on ne peut pas additionner des choux et des carottes, n'est-ce pas ?

    donc, avant de me lancer, même pour deux secondes, je voudrais savoir dans quelle unité est la colonne 2 (c'est des secondes, des minutes...)

    de plus, les calculs de dates s'effectuent sur des dates en secondes depuis epoch, puis il faudra les convertir en date pour obtenir quelque chose de lisible.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Points : 300
    Points
    300
    Par défaut
    Quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    Start=20100921000000
    while IFS=':' read A B C
    do
       ((A<$Start)) && continue
       ((N+=B))
    done
    echo "Somme : $N"

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 50
    Points : 29
    Points
    29
    Par défaut
    Merci fransoo, ca ressemble effectivement a un truc comme ca!

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Baradhur Voir le message
    Bonjour a tous!

    Je dois faire du traitement sur un fichier sous linux, et je voulais utilisez du shellscript pour ce faire. Le probleme, c'est que je trouve pas comment faire efficacement Ca doit prendre 2 secondes a quelqu'un qui a l'habitude, mais mois je galere...

    Je vous explique:
    J'ai un fichier, qui contient x lignes de ce type:
    20101108094218:1634:l:172.20.140.128:Fedora_exam:-

    Je voudrais faire l'addition des nombres situes dans la deuxième colonne, a partir d'une date situe dans la première colonne. (apres 20100921000000 en gros, c'est YYYYMMDDHHMMSS).

    en gros un truc du genre (en moche) :

    A partir de 2010092100000 (col1),
    while (!EOF)
    {i = i + col2;}


    Merci d'avance pour les aides que je pourrais recevoir.


    Cordialement,
    Baradhur.
    Tu veux faire la somme des nombres situés en colonne 2 ??? On peut le faire en 100% shell mais c'est con vu qu'il existe tout un tas d'outils super rapides disponibles, autant s'en servir et les appeler depuis le shell (toujours déléguer aux autres ce qu'on n'a pas envie de faire !!!)

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/sh
    res=$(awk -F: 'BEGIN {somme=0; start=0} {if ($1 == "2010092100000") start=1; if (start) somme+=$2} END {print somme}' fichier)
     
    echo "Résultat: $res"

    A titre informatif, le même code en shell pur. Tu pourras l'exécuter et voir le temps que ça prend par rapport au premier...

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/sh
    res=0
     
    exec 3<fichier
     
    while read ligne 0<&3
    do
        test "$(echo $ligne | cut -f1 -d:)" = "2010092100000" && start="true"
        test -n "$start" && res=$(expr $res + $(echo $ligne | cut -f2 -d:))
    done
     
    echo "Résultat: $res"
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Petit coup de main pour une macro XL 2010
    Par jphostier dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/07/2013, 14h57
  2. Petit coup de main pour une meilleur compréhension
    Par b_sky dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 22/06/2011, 18h51
  3. Petit coup de main pour débuter
    Par Wil14 dans le forum JPA
    Réponses: 2
    Dernier message: 14/04/2010, 11h32
  4. Petit coup de main pour syntaxe
    Par santacrus dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/12/2008, 20h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo