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 :

trier et classer sur un tableau


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Par défaut trier et classer sur un tableau
    Bonjour.

    Quand je lance la script j'ai actuellement ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     ./test.ksh -s
    mois DTU_SUPP_LOT_TABLE_FORMAT. type de DT :  0
    mois BD0032. type de DT :  0
    mois BD0020. type de DT :  0
    mois DTR_MAJ_FORMAT_FACTURE. type de DT :  0
    mois 11 type de DT : DTI 11
    mois BD0043. type de DT :  0
    mois BD0023. type de DT :  0
    mois 11 type de DT : DTR 3
    mois BD0013. type de DT :  0
    mois BD0001. type de DT :  0
    mois DTR_DEVERROU_CPTE. type de DT :  0
    mois BD0062. type de DT :  0
    mois DTR_MAJ_STATUS_CPT. type de DT :  0
    le script :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     $ vi ./test.ksh
    "./b1.ksh" 73 lines, 1340 characters
    #!/bin/ksh
    USAGE=${USAGE:-"mois=<mm> [filtre=<DTI|DTR>]"}
    fct_usage ()
    {
    echo "$USAGE "
    exit 1
    }
     
    # Selection des options sur la ligne de commande
    [ "$(echo "$1"|cut -c1-2)" != "-s" ] && echo "$(basename $0) -s[tart] $USAGE" && exit 1
    shift && while [ $# -gt 0 ]
     do
     [ $(echo $1|grep -c "=" ) = 0 ] && break
        eval   export $(echo $1|sed -e 's/=/="/' -e 's/$/"/')
        shift
     done
    [ -n "$debug" ] && PS4='$LINENO '${ps4:-'>'}' ' && set -x
     
    fct_trait ()
    {
    #echo traitement de $1
    zgrep "${lfiltre}_" $1 |awk ' $0 ~ "Lancement" {
    nb += 1
    print "___",$(NF)
    #ZZ[$(NF)]++
    #print $NF
     }
    END {
    if (nb != 0)
     {
    # for (k in ZZ )
    #  print k"a ete lance" ZZ[k] "fois"
     printf ("mois %s : Nombre de %s trouves %d \n","'${m}'","'${lfiltre}'",nb)
     }
     
     }'
    }
    filtre=${filtre:-"DTI DTR"}
     
     
    fct_mois ()
    {
     for m in $mois
     do
    for lfiltre in $filtre
      do
    #si mois courant  , on inclut la felog
    for k in $([ ! -n "$jour" ] && ls /toto/titi.${m}*) $([ $m = $(date '+%m') ] &&  echo $FE_LOG)
    #for k in $([ ! -n "$jour" ] && ls /toto/titi.${m}*) $([ $m = $(date) ] &&  echo $LOF_LOG)
     do
    fct_trait $k
       done
      done
     done
    }
     
    [ $# -eq 0 -a "$mois" = "" ] && jour=y
    [  -n "$jour"  ] && mois=$(date '+%m')
    #fct_mois
     
     
    fct_somme ()
    {
    fct_mois | awk '{
    tab["mois "$2" type de DT : "$6] += $8
    }
    END {
    for (k in tab)
     print k , tab[k]
    }'
    }
     
    fct_somme
    Je voudrais avoir comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ./test.ksh -s
    mois 11 type de DT : DTI 11
    BD0032
    BD0020 
    BD0043. 
    BD0023. 
    BD0013. 
    BD0001. 
    BD006  
    DTU_SUPP_LOT_TABLE_FORMAT
    mois 11 type de DT : DTR 3
    DTR_DEVERROU_CPTE
    DTR_MAJ_FORMAT_FACTURE
    DTR_MAJ_STATUS_CPT
    Merci d'avance.
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt DT.txt (10,0 Ko, 66 affichages)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    et... ?

    ce n'est, ici, pas une fontaine à souhait, où l'on jette ses intentions avec le script, en espérant que tout se passe comme par magie.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    trier selon quel(s) critère(s) ?

    si, dans le fichier donné en lien, je recherche pour le mois de novembre(11) les DTI qui ont été lancés, je n'obtiens pas le résultat que tu montres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ awk -vmois=11 -vcherche=DTI '$0 ~ "[0-9][0-9][0-9][0-9]/"mois"/[0-9][0-9]" && $0 ~ cherche && /Lancement/{array[n++]=$NF};END{printf("nb2%s au mois %s: %d\n",cherche,mois,n); for(i in array)print array[i]}' ../21/DT.txt 
    nb2DTI au mois 11: 11
    BD0023.
    BD0001.
    BD0020.
    BD_DELETTRAGE_RDS.
    BD0062.
    BD0013.
    DTU_SUPP_LOT_TABLE_FORMAT.
    DT_MAJ_PACKAGE.
    DTR_MAJ_DATE_OF.
    DTR_DEVERROU_CPTE.
    DTR_MAJ_BI_PAY_METHOD.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Par défaut
    Quand je lance le script je voudrais avoir ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ./test.ksh -s
    mois 11 type de DT : DTI 11
    BD0032
    BD0020 
    BD0043. 
    BD0023. 
    BD0013. 
    BD0001. 
    BD006 
    DTU_SUPP_LOT_TABLE_FORMAT
    mois 11 type de DT : DTR 3
    DTR_DEVERROU_CPTE
    DTR_MAJ_FORMAT_FACTURE
    DTR_MAJ_STATUS_CPT

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    je ne pourrais jamais obtenir cette sortie avec le fichier de données que tu as mis en lien, car, au moins, BD0032 n'y figure pas. Ce serait bien de donner le fichier qui correspond.

    et je te le demande encore une fois, quel(s) est/sont le(s) critère(s) de tri ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Par défaut
    Quand je lance le script, je voudrais avoir ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ./test.ksh -s
    mois 11 type de DT : DTI 11
    BD0032
    BD0020 
    BD0043. 
    BD0023. 
    BD0013. 
    BD0001. 
    BD006 
    DTU_SUPP_LOT_TABLE_FORMAT
    mois 11 type de DT : DTR 3
    DTR_DEVERROU_CPTE
    DTR_MAJ_FORMAT_FACTURE
    DTR_MAJ_STATUS_CPT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Line 975: 2011/11/17 20:00:20 DTI_ANHDI5_NHJDI501_2397 FE0 fe0 2397 CA.LancerDT.sh NHTZ999IX00NN INFO Lancement de la DT : DTR_MAJ_DATE_OF.
    Line 2243: 2011/11/17 20:00:51 DTI_ANHDI5_NHJDI501_2397 FE0 fe0 2397 CA.LancerDT.sh NHTZ999IX00NN INFO Lancement du BD : BD0023
    Il faut compter le nombre de DTI et DTR puis donner les types de DT par jour et par mois.
    Le script il fait par jour et par mois.

    Une DT est peut être soit DTI ou DTR.

Discussions similaires

  1. Références et pointeurs sur un tableau
    Par smag dans le forum C++
    Réponses: 2
    Dernier message: 01/03/2005, 20h29
  2. function sur un tableau
    Par bibi2607 dans le forum ASP
    Réponses: 9
    Dernier message: 17/02/2005, 09h54
  3. Réponses: 2
    Dernier message: 08/04/2004, 16h30
  4. Comment faire un Drag&Drop sur un tableau
    Par Stef.web dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2003, 13h12
  5. [VBA-E] Dim dynamique sur un tableau
    Par Vince69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2002, 13h32

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