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

Shell et commandes GNU Discussion :

Formater un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Par défaut Formater un fichier
    Bonjour,

    J'ai deux fichiers à longueur variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fic1
    AAA ZZZZ EEEEE
    RRRRRR TTTTTT YYYYY
    UUUUUUUU IIIIIIIIIIIII OOOOOOOOOOO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fic2
    PPPP QQQQQ SSSSS
    DDDDDDD FFFFFFFFFFF GGGGGGGGGG
    HHHHHHHHHHH JJJJJ KKK
    De plus, j'ai un fichier de paramétrage qui donne la longueur max que doit avoir fic1 et fic2. Voici donc à quoi il ressemble :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fichier param contient les deux lignes 
    fic1;200
    fic2;400
    Ce que je cherche à faire : lire la longueur max de fic1 à partir du fichier de paramétrage et l'appliquer à toutes les lignes de ce fichier :

    1- si la longueur d'une ligne de fic1 < à la longueur max, j'ajoute des blancs en fin de ligne
    2- si la longueur d'une ligne de fic1 > à la longueur max, je coupe à la bonne longueur (200 premiers caractères)
    3- si la longueur d'une ligne de fic1 = à la longueur max, je ne fais rien

    A la fin du traitement, je dois obtenir un fichier fic1 de longueur fixe et qui correspond à 200 comme l'indique le fichier de paramétrage.

    Le même traitement doit être appliqué pour fic2.

    Je sais que awk est hyperpuissant pour faire cela mais je n'y arrive pas.
    Si vous avez une idée, ça serait avec plaisir.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Je ne suis pas d'habitude à balancer des RTFM mais puisque tu connais l'outil, tu pouvais chercher un peu avant de poster ta question ....

    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
    23
    24
    25
    26
    27
    28
    29
     
    BEGIN{
    FS=";"
    }
    {
            result=1
            myfile=$1
            mysize=$2
            getline myvar < myfile
            for( i=0 ; result!=0  ; result=getline myvar < myfile )
            {
                    if ( length(myvar) <= mysize)
                    {
                            chaine=" "
                            for ( i=0 ; i <= ( mysize - length(myvar) ) ; i++ )
                            {
                                    chaine=chaine" "
     
                            }
                            print myvar chaine
                    }
                    else
                    {
                            print substr(myvar,0,mysize )
     
                    }
     
                    i++
            }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Par défaut Merci becket
    Merci beaucoup pour la réponse.
    J'ai testé le code et j'ai rencontré deux soucis :

    Le premier porte sur le nombre d'espaces ajoutés quand la longueur est inférieure à la longueur souhaitée. Le code
    avec la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ( i=0 ; i <= ( mysize - length(myvar) ) ; i++ )
    génère deux espaces en trop à la fin des enregistrements.

    Le second souci porte sur la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     for( i=0 ; result!=0  ; result=getline myvar < myfile )
    si le fichier myfile n'existe pas, la boucle tourne à l'infini.

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Tu as constaté que le code est a modifier pour que cela rencontre exactement tes attentes. Modifie le pour qu'il le devienne ou explique ce que tu as fait comme modifications qui ne fonctionnent pas mais cela ne me tente pas d'écrire les corrections pour toi.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Par défaut Tout à fait
    Tu as tout à fait raison de souligner que l'essentiel était dans ton code et je réitère mes remerciements. Je suis impressionnant pour la puissance de awk et par ceux qui le maitrisent.

    Je fais passer le statut du message à "Résolu"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH MX2004] Format de fichier inattendu
    Par k2r.fr dans le forum Flash
    Réponses: 1
    Dernier message: 05/07/2005, 11h43
  2. [C / C++][Format de fichier] Le TIFF G4
    Par chronos dans le forum Windows
    Réponses: 1
    Dernier message: 17/06/2005, 15h57
  3. Format de fichier extensible
    Par Rodrigue dans le forum C++Builder
    Réponses: 9
    Dernier message: 11/06/2005, 14h45
  4. [Format de Fichier] Recherche de site
    Par Pedro dans le forum Windows XP
    Réponses: 5
    Dernier message: 12/04/2005, 16h11
  5. Quel format de fichier utiliser pour les maps ?
    Par fb57 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/09/2004, 20h22

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