IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

script qui modifie header (ASCII) d'un fichier


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Par défaut script qui modifie header (ASCII) d'un fichier
    Bonjour

    Je ne connais que quelques bases en scripts shell linux (mais j'apprends vite...) et j'aurais besoin d'aide.

    Je souhaite ecrire un script qui gere les headers d'images en format FITS.
    Une image FITS est composee d'un header en format ASCII, suivi de l'image en format binaire. Le header contient plusieurs champs de 80 caracteres. Chaque champ contient un mot-cle suivi d'un contenu. Le dernier champ du header contient le mot-cle "END" : ensuite c'est l'image.

    Je voudrais ecrire des scripts qui lorsqu'on leur donne un nom de fichier "image.fit", permettent de faire des operations diverses sur les mot-cles:
    - par exemple, balayer tous les headers et s'arreter aux headers ayant le mot-cle "EXPOSURE" et remplacer "EXPOSURE" par "EXPTIME".
    - ou alors renvoyer (avec l'instruction echo) le contenu du header ayant pour mot-cle "DATE-OBS"
    etc

    Est-ce c'est possible ?
    De quelles instructions j'aurais besoin ?
    Si vous pouviez m'orienter dans la bonne direction, et eventuellement me donner quelques bouts de code, je devrais pouvoir me debrouiller...

    Merci pour votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Par défaut
    Si je veux remplacer la premiere occurrence de EXPOSURE par EXPTIME dans le header de l'image, ca a l'air de marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sed -i 's/EXPOSURE/EXPTIME/' image.fit
    Maintenant, si je veux afficher le champ EXPTIME du header ? Il faut afficher les 80 caracteres qui commencent par EXPTIME, comment faire ?

  3. #3
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut
    Il faudrait savoir ce qui signale la fin du header. Ou est-il toujours de la même taille (les N premiers octets) ?.
    Pour être le plus complet possible il faudrait:
    1. séparer l'ensemble du header (selon le critère expliqué plus haut)
    2. l'éditer
    3. le recoller à l'image. (sans soucis dans *nix)

  4. #4
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Par défaut
    Le header est compose d'une successions de champs de 80 caracteres, qui sont comme ca:

    La fin du header est un champ de 80 caractere qui commence par 'END' suivi de 77 espaces:

    Ce qu'il faudrait c'est un script qu'on appelle avec
    qui renvoie:
    MOT-CLE = valeur

  5. #5
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut
    Ça ne me semble pas poser de problèmes.
    J'aimerais faire l'essai avec un ou deux échantillons.
    Les poster ou poster des URLs seraient une aide précieuse...

  6. #6
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Par défaut
    Voici un lien ou on peut telecharger une image FITS:
    http://astrosurf.com/caron/mediane/test.fit

  7. #7
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut
    Voilà déjà de quoi lire l'entête (brut de décoffrage)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    while read -n80 L
    do
       [ "${L::3}" = "END" ] && break
       echo $L
    done <test.fit
    résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SIMPLE = T
    BITPIX = 16
    NAXIS = 2
    NAXIS1 = 736
    NAXIS2 = 482
    MIPS-HI = 5081
    MIPS-LO = 4681
    MIPS-X1 = 0
    MIPS-Y1 = 0
    MIPS-X2 = 0
    MIPS-Y2 = 0
    MIPS-BIX= 1
    MIPS-BIY= 1
    MIPS-CCD= 1
    MIPS-FL = 0
    MIPS-SX = 0
    MIPS-SY = 0
    MIPS-NOR= 0.000000
    MIPS-CST= 0.000000
    DATE-OBS= '2010-04-17T23:05:39'
    UT-START= '23:05:39'
    EXPTIME = 60.
    Visiblement les mots-clés font systématiquement 8 caractères. Est-ce une des contraintes du format ?

  8. #8
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut
    Et voici le script qui extrait la valeur souhaitée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    while read -n80 L
    do
       [ "${L::3}" = "END" ] && break
       [ "${L%% *}" = "$1" ] && echo $L
    done <test.fit

Discussions similaires

  1. Script qui vérifie si le fichier a été modifié
    Par 20132014 dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 29/10/2014, 00h55
  2. programme qui modifie le contenu d'un fichier
    Par da_latifa dans le forum Débuter
    Réponses: 11
    Dernier message: 27/10/2014, 17h06
  3. Réponses: 5
    Dernier message: 23/05/2014, 13h09
  4. [PHP 4] Petit Script Qui Permet De Supprimer Tous Les Fichiers D'un Dossier
    Par The_Haunted dans le forum Langage
    Réponses: 5
    Dernier message: 03/01/2009, 15h15
  5. Script qui ne fonctionne pas via un fichier Batch ?
    Par bilou95 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 31/12/2007, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo