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 :

Compter des lignes perl ou bash


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 124
    Points : 52
    Points
    52
    Par défaut Compter des lignes perl ou bash
    Hello

    voilà, j'ai un fichier avec des users et le nombre de connexion par jour.

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    user1 34
    user2 12
    user3 94
    user4 132
    et comme chaque jour je viens completer ce fichier, j'ai un gros fichier qui ressemble à ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    user1 34
    user2 12
    user3 94
    user4 132
    user1 334
    user2 142
    user3 948
    user4 1342
    user1 434
    user2 142
    user3 95
    user4 1362
    ( enfin, inversé, car je fais un | sort -n | uniq -c >> )

    DOnc ma question est :
    peut-on avoir, par user, le nombre total de connexions ?

    Merci

    chris

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    tu crees une table de hachage avec comme cles les noms d'utilisateur et comme valeur le nombre de connexions..
    tu peux même aller loin et afficher les dates de connexions...

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    Citation Envoyé par Krispy
    peut-on avoir, par user, le nombre total de connexions ?
    Oui, tu le peux.
    Le plus simple est surement de faire un script awk qui somme le nombre de connexion en fonction du nom de l'utilisateur, puis qui affiche le réusltat à la fin.

    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    awk '{  if ($1=="user1") { NB_USER1+=$2 } else
            if ($1=="user2") { NB_USER2+=$2 } else
            if ($1=="user3") { NB_USER3+=$2 } else
            if ($1=="user4") {NB_USER4+=$2 }
            {print "user 1 connected " NB_USER1 "times"  }
            }' mon_fichier.txt
    Attention, le script ci-dessus affiche la ligne du print pour chaque ligne du fichier, ce qui n'est pas exactement ce que tu recherches.

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    avec awk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     sort user.txt | awk -f user.awk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    {
            if ( NR == 1 )
            {
                    UTILISATEUR = $1
                    cpt =0
            }
     
            else
            {
                    U_PRECEDENT = UTILISATEUR
            }
    }
     
    {
            if ( UTILISATEUR == $1 )
             {
                    cpt=cpt+$2
             }
            else
            {
                    print U_PRECEDENT " totalise " cpt
                    UTILISATEUR=$1
                    cpt=0
            }
     
    }
     
    END{
            print UTILISATEUR " totalise " cpt

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Même idée avec une guerre de retard! (faut absolument que je m'habitue à faire refresh sur mon Opera)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sort fichier | awk '
    {
        if ($1 == act){
            nbtot += $2
        } else {
            if (act) print act, nbtot
            nbtot = $2
        }
        act = $1
    }
    END {print act, nbtot}'

Discussions similaires

  1. [XSLT] compter des lignes / 2 colonnes
    Par lecelte dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/09/2009, 16h13
  2. script pour compter des lignes de codes
    Par zg2pro dans le forum Linux
    Réponses: 6
    Dernier message: 08/12/2007, 14h14
  3. compter des lignes \n dans un texrarea
    Par gforce dans le forum Général JavaScript
    Réponses: 56
    Dernier message: 19/01/2007, 15h44
  4. Compter des lignes
    Par HULK dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/05/2005, 10h20
  5. [LG]Compter des Lignes...
    Par Loceka dans le forum Langage
    Réponses: 7
    Dernier message: 04/03/2004, 20h29

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