Comment extraire des données avec "awk"

Résolu/Fermé
Redouaniel - 2 mars 2013 à 16:55
 Redouaniel - 2 mars 2013 à 22:19
Bonjour,

j'ai un très long texte qui contient plusieurs information; il est du type:

nom type longitude latitude altitude
A B 1 2 3
C D 4 5 6
E F 7 8 9
G H 10 11 12
.
.
.
.



comment je peux utiliser la commande "awk" pour extraire seulement la 5ème et 10ème ligne, et seulement que la longitude et latitude et altitude,,,

j'ai essayer, mais je ne peux faire apparaître que un seul caractère, ou une seule ligne

par exemple avec ''print" je peux faire; awk '{if (NR==2)print$2}'

mais ce que je veux moi, c'est préciser les données de ce tableau:
qui soient des : longitude, latitude, et altitudes
et aussi; dont la longitude: varie de -12 à 12


svp, est-ce que quelqu'un peut m'aider à résoudre ce problème.

A voir également:

2 réponses

Utilisateur anonyme
2 mars 2013 à 17:29
salut,

Si tu veux qu'on te donne un code opérationnel, il faudrait au moins fournir 10 lignes d'échantillon!
Et exposé ta requête clairement.
si la ligne est la 5e ou la 10e
alors
   si la 3e colonne vaut entre -12 et 12
   alors
      afficher les colonnes 3 4 et 5
   finsi
finsi
c'est ça?
0
j'avais exprimer les données en forme tabulaire, mais quand j'ai valider ici sur le site,, tout est passer vers la ligne

merci pour votre algorithme il exprime bien ce que je cherche seulement:

si la ligne est la 5e ou la 10e
alors
si la 3e colonne vaut entre -12 et 12
alors
afficher les colonnes 3 4 et 5
finsi
finsi

je dois le faire avec la commande awk:

en suivant votre algorithme et en prenant toutes ligne je ferais;

awk '{if (/$2=[-12,12]/)print $2,$3,$4}' essaye.txt le fichier s'appel essaye.txt

mais ce que je met ne donne pas de résultat,,

je suis très nouveau en linux,, et je dois m'intéresser à la commande awk, c'est sur elle qui repose mon travail.

comment doit m'y prendre?
0
Utilisateur anonyme
2 mars 2013 à 18:22
comment doit m'y prendre?
en lisant la doc ;)

la 3e colonne, c'est $3
awk '(NR==5||NR==10)&&(-12<=$3&&$3<=12){print $3,$4,$5}'
0
merci beaucoup pour le lien ;
et surtout milllllllles merci pour la commande que j'ai testé et puis reformulé a ma manière,, et qu'est une merveille,,

merci beaucoup ;-)

mon but dans tout ça,, c'est de dessiner une carte topographique, et cela m'aide beaucoup.
Lors de l'exécution du scripte,, je veux qu'il me dessine que les partie indiqué, c'est-à-dire
(NR==5||NR==10)&&(-12<=$3&&$3<=12)

Je commence à devenir lourd ,,,,, mais je me demande si y'aura une autre syntaxe, autre que "print" qui maintenant ne va pas affiché ces coordonnées que je veux,, mais encore mieux elle va les sélectionner pour que le programme de cartographie puisse y travaillé.

merci encore une fois.
0
elle va les sélectionner pour que le programme de cartographie puisse y travaillé.

le programme de cartographie attend quel type/format d'entrée ?
0
c'est le generic mapping tools GMT
je rédige les commande dans l'éditeur de texte, et j'enregistre le fichier comme par exemple;
''exemple" ou "exemple.gmt'

j'ai pas à mentionner le format de entrée,, moi en tout cas j'ai jamais fais ça,,, il me suffit de donner le fichier de sortie, qu'est ''exemple.ps"

j'exécute avec "./exemple.gmt"
et je visualise avec "gv exemple.ps"
0
Utilisateur anonyme
2 mars 2013 à 20:17
Que fait print, que tu voudrais qu'il ne fasse pas?
Que/comment veux-tu afficher les données ?

je ne comprend pas: «elle va les sélectionner pour que le programme de cartographie puisse y travaillé.
»
0