Comment extraire des données avec "awk"

Résolu
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.

2 réponses

  1. 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?
    1. 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?
      1. 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}'
      2. 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.
      3. 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 ?
      4. 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"
      5. 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é.
        »