Extraire numero de ligne spécifique

Résolu/Fermé
doucedouce - 5 mai 2009 à 19:14
 doucedouce - 6 mai 2009 à 18:37
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
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
5 mai 2009 à 19:25
Salut,
sed -n '/a/=' toto > colonne
,-))
0
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
5 mai 2009 à 22:32
[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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894 > doucedouce
6 mai 2009 à 12:20
Merci d'afficher un exemple concret du contenu du fichier cible et le résultat voulu, sans quoi on part dans le mur ;-(
1
doucedouce > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
6 mai 2009 à 13:11
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894 > doucedouce
6 mai 2009 à 14:30
Ok je pige mieux ;-\

Et le résultat escompté en sortie est ? (en partant du fichier "toto" donné en exemple)
0
doucedouce > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
6 mai 2009 à 16:06
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
6 mai 2009 à 16:16
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
C'est parfait ,Merci énormement pour votre aide , votre patience et compréhension :D
au plaisir ;)
0