Extraire numero de ligne spécifique

Résolu
doucedouce -  
 doucedouce -
Bonjour,voila mon probleme je dispose d'un fichier contenant des colonnes (supposons 4colonnes)
comme suit(pr simplifier la chose ,les chiffres sont donnés au hasard) je nomme toto ce fichier
toto:
1 2 3 4
5 6 7 8
a 9 10 56
a a 11 45
a a 67 89
a a a 45
a a a a
ce que je voudrais maintenant c'est connaitre pour chaque colonne le numero de la premiere ligne dans laquelle aparait le "a" et les mettre dans un fichier colonne ,c'est a dire pour l'exemple de toto, le résultat final sera comme suit:
tata:
3
4
6
7

voila j 'espere que c'est assez clair et merci
Configuration: Windows Vista Internet Explorer 7.0

4 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    sed -n '/a/=' toto > colonne
    ,-))
    0
  2. doucedouce
     
    reBonsoir,
    j'ai essayé avec cette commande mais ca n'a malheureusement pas donné le résultat attendu,
    en fait je veux par exemple que le script fasse un traitement sur chaque colonne et qu'il me donne le numero de ligne ou la premiere valeur de "a" apparait , et qu'il fasse de meme pour chaque aute colonne ...
    et pour le fichier colonne résultat : sa premiere valeur par exemple ca correspond a la ligne de la premiere valeur "a" DE LA PREMIERE COLONNE , et la deuxieme valeur c'est la ligne ou on a trouvé la premiere valeur "a" dans la deuxieme colonne et ainsi de suite....
    merci d'avance
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [tmpfs]$ cat toto
    1 2 3 4
    5 6 7 8
    a 9 10 56
    a a 11 45
    a a 67 89
    a a a 45
    a a a a
    
    [tmpfs]$ sed -n '/a/=' toto
    3
    4
    5
    6
    7
    
    [tmpfs]$ 
    C'est pas bon ?
    0
    1. doucedouce
       
      Bonjour,
      en fait mon fichier toto est un peu plus compliqué que celui que je viens de donner, mon fichier contient dans sa premiere colonne des hauteurs (des niveaux verticaux) et les autres colonnes sont en fait des données de temperatures ,(il existe des valeurs de temperaturees et des "nan" ie des valeurs absentes)
      mon probleme c'est 'avoir pour chaque colonne la hauteur ou se trouve le premier "nan" ( ceci en suposant que par exemple je peux avoir que la hauteur du "nan" de la 3eme colonne soit avant la hauteur du "nan" de la 1ere colonne) et avec la commande que vous m'avez conseillé ,ca ne donne pas le résultat voulu. voila
      merci infiniment
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > doucedouce
         
        Merci d'afficher un exemple concret du contenu du fichier cible et le résultat voulu, sans quoi on part dans le mur ;-(
        1
      2. doucedouce > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        voila un exemple du fichier cible (un peu court quand meme) nommé par exemple toto:

        0.5 22 27 20 19
        1 21 26 nan 18
        3 20 25 nan 16
        4 nan 24 nan nan
        50 nan 23 nan nan
        100 nan 22 nan nan
        200 nan nan nan nan
        300 nan nan nan nan
        800 nan nan nan nan


        et le resultat voulu c'est:
        4 # ie (le premier nan de la premiere colonne se trouve a la hauteur 4)
        200 # ie (le premier nan le la deuxieme colonne se trouve a une hauteur de 200)
        1
        4

        voila merci pour votre patience :)
        0
      3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > doucedouce
         
        Ok je pige mieux ;-\

        Et le résultat escompté en sortie est ? (en partant du fichier "toto" donné en exemple)
        0
      4. doucedouce > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Pour cet exemple toto ,le resultat en sortie sera le fichier tata(un fichier d'une seule colonne) comme suit:
        4
        200
        1
        4
        0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Un truc du genre...
    jp@MDK:~/tmpfs ssh$ cat plop
    0.5 22 27 20 19
    1 21 26 nan 18
    3 20 25 nan 16
    4 nan 24 nan nan
    50 nan 23 nan nan
    100 nan 22 nan nan
    200 nan nan nan nan
    300 nan nan nan nan
    800 nan nan nan nan
    
    jp@MDK:~/tmpfs ssh$ cat foo.sh
    #! /bin/sh
    
    #set -xv
    
    i=1
    while [ "$i" -lt 6 ]
    do
    awk '$'"$i"' ~ /nan/ {print $1;exit }' plop
    i=$((i + 1))
    done
    
    jp@MDK:~/tmpfs ssh$ ./foo.sh
    4
    200
    1
    4
    
    jp@MDK:~/tmpfs ssh$
    ;-))
    0
    1. doucedouce
       
      C'est parfait ,Merci énormement pour votre aide , votre patience et compréhension :D
      au plaisir ;)
      0