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

Scripts/Batch Discussion :

Trier un tableau multidimensionnelle


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Trier un tableau multidimensionnelle
    Bonjour,

    J'aimerais trier un tableau multidimensionnelle.

    Mon tableau est :
    Serveur Appli début Fin total
    SRV1 test 06/12/2016 04:02:00 06/12/2016 04:07:21 00:05:21
    SRV1 test 06/12/2016 10:30:00 06/12/2016 10:36:06 00:06:06
    SRV2 test2 06/12/2016 04:01:00 06/12/2016 04:05:18 00:04:18
    SRV2 test2 06/12/2016 10:30:00 06/12/2016 10:35:45 00:05:45

    J'aimerais retirer les doublons dans la colonne "Appli" et ne prendre que les lignes les plus recentes.
    Pour l'appli test :
    SRV1 test 06/12/2016 10:30:00 06/12/2016 10:36:06 00:06:06

    test2 :
    SRV2 test2 06/12/2016 10:30:00 06/12/2016 10:35:45 00:05:45


    Merci d'avance pour vos idées et conseils.

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    j'ai vu que cest un tag PS mais je crois qu'il sera dur de faire plus simple qu'avec ce BAT si ton fichier LOG et structuré de la manière que tu nous
    l'a décris et incrementé dans le temps après chaque test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    
    for /f "skip=1 tokens=1-2* delims= " %%a in (result.log) do set ##%%b=%%a %%b %%c
    for /f "tokens=2 delims==" %%a in ('set ##') do echo %%a
    ça te retourneras que les derniers tests en écrasant les précedents .
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Bonjour,

    Je vais mettre tes données dans un "tableau" $tab pour commencer, ce qui me permettra de répondre à ta question.

    Code powershell : 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
    $tab = @()
    $tab += New-Object PSCustomObject -Property @{
    Serveur = "SRV1";
    Appli = "test";
    début = [datetime] "06/12/2016 04:02:00";
    Fin = [datetime] "06/12/2016 04:07:21";
    total = "00:05:21"}
     
    $tab += New-Object PSCustomObject -Property @{
    Serveur = "SRV1";
    Appli = "test";
    début = [datetime] "06/12/2016 10:30:00";
    Fin = [datetime] "06/12/2016 10:36:06";
    total = "00:06:06"}
     
    $tab += New-Object PSCustomObject -Property @{
    Serveur = "SRV2";
    Appli = "test2";
    début = [datetime] "06/12/2016 04:01:00";
    Fin = [datetime] "06/12/2016 04:05:18";
    total = "00:04:18"}
     
    $tab += New-Object PSCustomObject -Property @{
    Serveur = "SRV2";
    Appli = "test2";
    début = [datetime] "06/12/2016 10:30:00";
    Fin = [datetime] "06/12/2016 10:35:45";
    total = "00:05:45"}

    Il n'y à plus qu'a faire un regroupement sur 'Appli' et pour chacun de ces groupes prendre le dernier élément.
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab | Group-Object -Property Appli | ForEach-Object {$_.Group | Select-Object -Last 1}

    Vu la structure de tes données j'ai pensé que le dernier élément étaient toujours les plus récente. Mais si ce n'est pas le cas tu peux ajouter un tri sur la colonne de ton choix, exemple :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab | Group-Object -Property Appli | ForEach-Object {$_.Group | Sort-Object -Property début | Select-Object -Last 1}

    @sachadee
    Ça existe des choses qui sont plus simple à faire en .bat que powershell ? Quand il aura des caractères spéciaux on verra ça
    Le tableau provient d'un fichier LOG ?

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @sachadee
    Ça existe des choses qui sont plus simple à faire en .bat que powershell ? Quand il aura des caractères spéciaux on verra ça
    Le tableau provient d'un fichier LOG ?
    Pour la première question => Oui ça existe.

    Pour les caractères spéciaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "skip=1 tokens=1-2* delims= " %%a in ('type result.log') ....
    et pour le LOG c'est une déduction personnel qui ne modifie en rien l'énoncé du problème.

    C'est juste une solution qui peu servir sans se casser trop la tête.

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

Discussions similaires

  1. Réponses: 15
    Dernier message: 18/05/2012, 13h15
  2. Trier un tableau multidimensionnel
    Par malabarbe dans le forum Langage
    Réponses: 9
    Dernier message: 04/03/2010, 20h28
  3. [PHP 5.2] Trier un tableau multidimensionnel ?
    Par nazoreen dans le forum Langage
    Réponses: 4
    Dernier message: 04/03/2009, 15h59
  4. [Tableaux] comment trier un tableau multidimensionnel
    Par tibotibo69 dans le forum Langage
    Réponses: 2
    Dernier message: 26/02/2008, 17h04
  5. [Tableaux] trier un tableau multidimensionnel
    Par chris801 dans le forum Langage
    Réponses: 2
    Dernier message: 08/06/2007, 08h43

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