Incrémenter un nom de variable

Résolu
nicole-rene -  
 nicole-rene -
Bonjour, je cherche a incrémenter le nom d'une variable dans une boucle pour positionner des variables différentes en sortie de boucle .
par exemple.
je lis des valeurs dans un fichier et positionne par un set :j'ai donc n fois les valeurs $1,$2 (ici un nom de disk et son volume),:

set 'head -200 $serveur|grep "/dev/" |grep %|awk '{print $1,$2}''

ce qui me donne :"/dev/hda1 75890620 /dev/hda2 75890620......."

ensuite je pensais faire :
N=1
while [ ! -S $1 ] ;do DISK$N=$1 ;Vol$N=$2"; N='expr $N + 1'; shift 2; done
mais je ne sais pas incrémenté le nom de ma variable
pour pouvoir mettre en forme dans un fichier de sortie ainsi:
par echo "$serveur;$DISK1:$Vol1;$DISK2;$Vol2;;;;;;
pour renseigner un fichier csv avec des champs vide ou non le nombre de disque étant limité
<Nom de serveur>;<nom disqu1>;volume disque 1>;<nom disque 2>;volume disque 2>
ce qui pourrai me donner :
Serveur toto;dev/hda1 ;75890620;/dev/hda2 ;75890620;;;;autres donnés;
Serveut tata;dev/hda1 ;75890620;;;;;;autres donnés;

avez vous des idées ?
Merci

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    On peut avoir une dizaine de ligne de "head -200 $serveur" s'il te plaît ?

    Merci.
    0
    1. nicole-rene
       
      oui pourquoi?
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Pour faire des test en live ;-))
      0
    3. nicole-rene
       
      dans mon script je n'ai qu'une commande head qui récupére autant de valeurs que de couples disk /volume
      0
    4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Merci de poster une dizaine de ligne du résultat de la commande sus-citée !

      Par expérience, il vaut mieux travailler sur du concret que sur des explications ;-(
      0
    5. nicole-rene
       
      $serveur est 1 fichier par serveur qui contient un ensemble d'info dont le résutat d'un df
      le grep me permet de récupérer les nom de disk et leurs volume.
      Une simul consisterais a mettre le résultat d'un df dans un fichier avec de préférence plusieur disk .avec 1 c'est facil ;-)
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaye comme ça :

    [tmpfs]$ cat plop
    SERVEUR_TOTO
    /dev/hda2 6999
    /dev/hda1 10004
    /dev/sdb1 183
    /dev/sdb3 10119
    /dev/sdb4 4138
    /dev/sdb5 957
    /dev/sdb6 4770
    /dev/sdb7 7633
    /dev/sdb8 957
    /dev/sdb9 957
    /dev/sdb10 9539
    
    [tmpfs]$ sed ':z;N;$! bz;s/ \|\n/;/g' plop
    SERVEUR_TOTO;/dev/hda2;6999;/dev/hda1;10004;/dev/sdb1;183;/dev/sdb3;10119;/dev/sdb4;4138;/dev/sdb5;957;/dev/sdb6;4770;/dev/sdb7;7633;/dev/sdb8;957;/dev/sdb9;957;/dev/sdb10;9539
    
    [tmpfs]$

    ;-))
    0
    1. nicole-rene
       
      les fichiers d'origine contienent 200000 lignes a exploiter et la ligne sur laquelje récupére les valeurs sont des lignes entiére ressemble plutot a :
      /dev/hda1 75890620 1847448 70188080 3% /
      /dev/hda2 75890620 1847448 70188080 3% /
      /dev/hda3 75890620 1847448 70188080 3% /
      /dev/hda4 75890620 1847448 70188080 3% /
      /dev/hda5 75890620 1847448 70188080 3% /
      le grep dev et grep % me permettent de selectionner les bonnes lignes je ne peux pas lire mes données autrement ,j'ai d'autre par d"autre données colléectées a mettre ma sortie csv
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      En gardant ta syntaxe essaye :

      head -200 $serveur|grep "/dev/" |grep %|awk '{print $1,$2}' | sed ':z;N;$! bz;s/ \|\n/;/g' plop
      0
    3. nicole-rene
       
      en fait en me débrouillant autrement finalement je peu aussi écrire
      set ''head -200 $serveur|grep "/dev/" |grep %|awk '{print $1,$2}'
      suivit par mon echo "nom de serveur;$1;$3;$5:$2;$3" >>fichier de sortie
      en fait je me suis un peu perdue en voulant compter le nombre de disque mais au final il n'y en aura pas plus de 5 et les champs deront laissés a vide .Donc finalement je crois que je me suis compliquée pour rien :-))
      Merci pour l'aide et le moment passé je garde le sed de coté car c vrai je ne l'utilise pas souvent ,ça oeut être util pour les mise en forme! bonne soirée
      0