• [^] # Re: difficile ....

    Posté par . En réponse au message Script awk : Afficher le nom du fichier en cours de traitement ?. Évalué à 3.

    Voici une autre façon de faire.

    Awk peut utiliser des chaines de caractères comme indice de tableau. Au lieu d'initialiser un compteur, on peut indexer nos tableaux avec le nom de lpar.

    $ awk -F',|;' ' BEGIN {i=0} /MO2PPC/ {2ドル;RAM[2ドル]=5ドル;CPU1[2ドル]=6ドル;CPU2[2ドル]=7ドル} ' /tmp/toto.txt 
    

    La boucle for permet, lorsqu'on l'utilise sur un tableau, de setter la variable de boucle avec l'indice du tableau (on aurait pu le faire d'ailleurs sur le tableau a indice numérique de l'exemple précédent). On va utiliser cette propriété en bouclant sur un des tableaux qu'on a initialisé, et utiliser la variable de boucle pour afficher les éléments des autres tableaux :

    $ awk -F',|;' ' /MO2PPC/ {2ドル;RAM[2ドル]=5ドル;CPU1[2ドル]=6ドル;CPU2[2ドル]=7ドル} END { print "FILENAME/ " FILENAME; for (j in RAM) { print "LPARS: " j; print "RAM: " RAM[j]; print "CPU 1: " CPU1[j]; print "CPU2: " CPU2[j] } }' /tmp/toto.txt FILENAME/ /tmp/toto.txt
    LPARS: miaibv246
    RAM: 12
    CPU 1: 0.5
    CPU2: 1
    LPARS: miaibv182
    RAM: 5
    CPU 1: 0.5
    CPU2: 1
    LPARS: mplaix0122
    RAM: 175
    CPU 1: 2.3
    CPU2: 5
    LPARS: mo2vio20a
    RAM: 7
    CPU 1: 1.0
    CPU2: 2
    LPARS: mo2vio20b
    RAM: 7
    CPU 1: 1.0
    CPU2: 2
    LPARS: miaibv95
    RAM: 60
    CPU 1: 0.6
    CPU2: 4
    LPARS: mplaix0306
    RAM: 180
    CPU 1: 0.5
    CPU2: 3
    LPARS: oncwasp4
    RAM: 15
    CPU 1: 0.6
    CPU2: 2
    LPARS: mplaix0087
    RAM: 100
    CPU 1: 0.4
    CPU2: 4
    LPARS: miaibv161
    RAM: 60
    CPU 1: 1.2
    CPU2: 4
    LPARS: mplaix0088
    RAM: 130
    CPU 1: 1.5
    CPU2: 11
    LPARS: mo2vio21a
    RAM: 6
    CPU 1: 1.5
    CPU2: 3
    LPARS: mo2vio21b
    RAM: 6
    CPU 1: 1.5
    CPU2: 3