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 :

Traitement de plusieurs fichiers textes


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de produit
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de produit

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut Traitement de plusieurs fichiers textes
    Bonjour,
    J'ai plusieurs fichiers textes et je veux les mettre en forme pour pourvoir les insérer dans une base oracle.
    mais avant je dois faire des traitements, j'ai commencé à faire quelques uns avec la commande "sed".
    je note que mon dossier contient plusieurs fichier texte, fichier_0001 .... fichier_N.
    Par exemple j'ai appliqué cette commande pour supprimer les 4 premieres lignes sur tout les fichiers textes
    je suis arrivé à cette forme de fichier.
    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
    Code 0001
    Coordonnées du truc ;     620000 ;    2681000  ;    6 ; (X,Y,Z, trucc)
    19580801;  0.0;  3.4; 15.2;  3.5;  9.0;  3023.6;   935.8;   0.454;  -0.999;  3.1;    2.0;
    19580802;  0.0;  0.0; 14.6;  9.8;  8.0;  2861.0;  2139.7;   0.441;  -0.999;  3.0;    3.4;
    19580803;  0.0;  0.2; 15.5;  4.5;  9.0;  3168.4;   873.8;   0.433;  -0.999;  3.2;    2.1;
    19580804;  0.0;  0.4; 15.8;  8.5; 10.0;  3376.1;   497.3;   0.433;  -0.999;  3.2;    1.5;
    19580805;  0.0;  1.4; 16.6;  8.5; 10.0;  3447.7;   829.7;   0.427;  -0.999;  3.3;    2.2;
    19580806;  0.0;  1.1; 15.5;  7.4;  9.0;  3181.5;  1037.2;   0.423;  -0.999;  3.1;    2.4;
    19580807;  0.0;  7.9; 13.8;  4.9;  9.0;  3228.9;   951.5;   0.467;  -0.999;  2.8;    1.5;
    19580808;  0.0;  0.6; 15.7;  7.5; 10.0;  3126.7;   756.1;   0.464;  -0.999;  3.1;    1.6;
    19580809;  0.0;  0.9; 17.5;  4.9; 12.0;  3443.4;   670.4;   0.462;  -0.999;  3.3;    1.2;
    19580810;  0.0;  0.0; 21.2;  4.6; 13.0;  3023.0;  2186.8;   0.446;  -0.999;  3.9;    4.0;
    19580811;  0.0;  0.4; 17.6;  4.3; 11.0;  3288.2;   509.1;   0.441;  -0.999;  3.3;    1.6;
    19580812;  0.0;  0.9; 15.7;  6.8; 10.0;  3348.8;   943.3;   0.437;  -0.999;  3.0;    1.7;
    19580813;  0.0;  5.8; 16.1;  8.1; 10.0;  3256.0;  1153.7;   0.437;  -0.999;  3.1;    2.1;

    le but c'est mettre les infos en gras sur chaque ligne
    voici la forme que je cherche à avoir:
    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
    Code 0001
    Coordonnées du centre ;     620000 ;    2681000  ;    6 ; (X,Y,Z, Lambert II étendu)
    19580801;  0.0;  3.4; 15.2;  3.5;  9.0;  3023.6;   935.8;   0.454;  -0.999;  3.1;    2.0;0001;620000;2681000
    19580802;  0.0;  0.0; 14.6;  9.8;  8.0;  2861.0;  2139.7;   0.441;  -0.999;  3.0;    3.4;0001;620000;2681000
    19580803;  0.0;  0.2; 15.5;  4.5;  9.0;  3168.4;   873.8;   0.433;  -0.999;  3.2;    2.1;0001;620000;2681000
    19580804;  0.0;  0.4; 15.8;  8.5; 10.0;  3376.1;   497.3;   0.433;  -0.999;  3.2;    1.5;0001;620000;2681000
    19580805;  0.0;  1.4; 16.6;  8.5; 10.0;  3447.7;   829.7;   0.427;  -0.999;  3.3;    2.2;0001;620000;2681000
    19580806;  0.0;  1.1; 15.5;  7.4;  9.0;  3181.5;  1037.2;   0.423;  -0.999;  3.1;    2.4;0001;620000;2681000
    19580807;  0.0;  7.9; 13.8;  4.9;  9.0;  3228.9;   951.5;   0.467;  -0.999;  2.8;    1.5;0001;620000;2681000
    19580808;  0.0;  0.6; 15.7;  7.5; 10.0;  3126.7;   756.1;   0.464;  -0.999;  3.1;    1.6;0001;620000;2681000
    19580809;  0.0;  0.9; 17.5;  4.9; 12.0;  3443.4;   670.4;   0.462;  -0.999;  3.3;    1.2;0001;620000;2681000
    19580810;  0.0;  0.0; 21.2;  4.6; 13.0;  3023.0;  2186.8;   0.446;  -0.999;  3.9;    4.0;0001;620000;2681000
    19580811;  0.0;  0.4; 17.6;  4.3; 11.0;  3288.2;   509.1;   0.441;  -0.999;  3.3;    1.6;0001;620000;2681000
    19580812;  0.0;  0.9; 15.7;  6.8; 10.0;  3348.8;   943.3;   0.437;  -0.999;  3.0;    1.7;0001;620000;2681000
    19580813;  0.0;  5.8; 16.1;  8.1; 10.0;  3256.0;  1153.7;   0.437;  -0.999;  3.1;    2.1;0001;620000;2681000
    Si vous avez des pistes pour m'aider merci par avance.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    pour faire simple, je partirais sur du awk :
    Code pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    si #ligne = 5
       L= ligne
       v1= ligne - 'code '
       afficher L
    si #ligne = 6
       v2= 2e col
       v3= 3e col
       afficher ligne
    si #ligne > 6
       afficher ligne;v1;v2;v3
    à répéter pour chaque fichier, et on oublie la commande sed.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Citation Envoyé par N_BaH Voir le message
    et on oublie la commande sed.
    Ah ben pourquoi ???

    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
    30
    31
    32
    33
    34
    35
    36
    $ cat plop 
    Code 0001
    Coordonnées du truc ;     620000 ;    2681000  ;    6 ; (X,Y,Z, trucc)
    19580801;  0.0;  3.4; 15.2;  3.5;  9.0;  3023.6;   935.8;   0.454;  -0.999;  3.1;    2.0;
    19580802;  0.0;  0.0; 14.6;  9.8;  8.0;  2861.0;  2139.7;   0.441;  -0.999;  3.0;    3.4;
    19580803;  0.0;  0.2; 15.5;  4.5;  9.0;  3168.4;   873.8;   0.433;  -0.999;  3.2;    2.1;
    19580804;  0.0;  0.4; 15.8;  8.5; 10.0;  3376.1;   497.3;   0.433;  -0.999;  3.2;    1.5;
    19580805;  0.0;  1.4; 16.6;  8.5; 10.0;  3447.7;   829.7;   0.427;  -0.999;  3.3;    2.2;
    19580806;  0.0;  1.1; 15.5;  7.4;  9.0;  3181.5;  1037.2;   0.423;  -0.999;  3.1;    2.4;
    19580807;  0.0;  7.9; 13.8;  4.9;  9.0;  3228.9;   951.5;   0.467;  -0.999;  2.8;    1.5;
    19580808;  0.0;  0.6; 15.7;  7.5; 10.0;  3126.7;   756.1;   0.464;  -0.999;  3.1;    1.6;
    19580809;  0.0;  0.9; 17.5;  4.9; 12.0;  3443.4;   670.4;   0.462;  -0.999;  3.3;    1.2;
    19580810;  0.0;  0.0; 21.2;  4.6; 13.0;  3023.0;  2186.8;   0.446;  -0.999;  3.9;    4.0;
    19580811;  0.0;  0.4; 17.6;  4.3; 11.0;  3288.2;   509.1;   0.441;  -0.999;  3.3;    1.6;
    19580812;  0.0;  0.9; 15.7;  6.8; 10.0;  3348.8;   943.3;   0.437;  -0.999;  3.0;    1.7;
    19580813;  0.0;  5.8; 16.1;  8.1; 10.0;  3256.0;  1153.7;   0.437;  -0.999;  3.1;    2.1;
     
    $ sed '1{N;H;s/[^;0-9]//g;s/\(.*\);.*;$/\1/;x;b};G;s/\n//' plop
     
    Code 0001
    Coordonnées du truc ;     620000 ;    2681000  ;    6 ; (X,Y,Z, trucc)
    19580801;  0.0;  3.4; 15.2;  3.5;  9.0;  3023.6;   935.8;   0.454;  -0.999;  3.1;    2.0;0001;620000;2681000
    19580802;  0.0;  0.0; 14.6;  9.8;  8.0;  2861.0;  2139.7;   0.441;  -0.999;  3.0;    3.4;0001;620000;2681000
    19580803;  0.0;  0.2; 15.5;  4.5;  9.0;  3168.4;   873.8;   0.433;  -0.999;  3.2;    2.1;0001;620000;2681000
    19580804;  0.0;  0.4; 15.8;  8.5; 10.0;  3376.1;   497.3;   0.433;  -0.999;  3.2;    1.5;0001;620000;2681000
    19580805;  0.0;  1.4; 16.6;  8.5; 10.0;  3447.7;   829.7;   0.427;  -0.999;  3.3;    2.2;0001;620000;2681000
    19580806;  0.0;  1.1; 15.5;  7.4;  9.0;  3181.5;  1037.2;   0.423;  -0.999;  3.1;    2.4;0001;620000;2681000
    19580807;  0.0;  7.9; 13.8;  4.9;  9.0;  3228.9;   951.5;   0.467;  -0.999;  2.8;    1.5;0001;620000;2681000
    19580808;  0.0;  0.6; 15.7;  7.5; 10.0;  3126.7;   756.1;   0.464;  -0.999;  3.1;    1.6;0001;620000;2681000
    19580809;  0.0;  0.9; 17.5;  4.9; 12.0;  3443.4;   670.4;   0.462;  -0.999;  3.3;    1.2;0001;620000;2681000
    19580810;  0.0;  0.0; 21.2;  4.6; 13.0;  3023.0;  2186.8;   0.446;  -0.999;  3.9;    4.0;0001;620000;2681000
    19580811;  0.0;  0.4; 17.6;  4.3; 11.0;  3288.2;   509.1;   0.441;  -0.999;  3.3;    1.6;0001;620000;2681000
    19580812;  0.0;  0.9; 15.7;  6.8; 10.0;  3348.8;   943.3;   0.437;  -0.999;  3.0;    1.7;0001;620000;2681000
    19580813;  0.0;  5.8; 16.1;  8.1; 10.0;  3256.0;  1153.7;   0.437;  -0.999;  3.1;    2.1;0001;620000;2681000
     
    $
    Certes, c'est indigeste, mais c'est mangeable, non ?

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Ah ben pourquoi ???
    c'est tout sed, ou tout awk, pas les deux
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    c'est tout sed, ou tout awk, pas les deux
    Alors j'ai tout bon

  6. #6
    Membre confirmé
    Homme Profil pro
    Chef de produit
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de produit

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    Merci pour vos réponses.

    pour le sed après exécution ce me donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '1{N;H;s/[^;0-9]//g;s/\(.*\);.*;$/\1/;x;b};G;s/\n//' fichier.txt
    et la ligne qu'on a ajouté revient à la ligne !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Code 0001
    Coordonnées du truc ;     620000 ;    2681000  ;    6 ; (X,Y,Z, trucc)
    19580801;  0.0;  3.4; 15.2;  3.5;  9.0;  3023.6;   935.8;   0.454;  -0.999;  3.1;    2.0;
    0001é;620000;2681000;6;é
    19580802;  0.0;  0.0; 14.6;  9.8;  8.0;  2861.0;  2139.7;   0.441;  -0.999;  3.0;    3.4;
    0001é;620000;2681000é
    .....

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

Discussions similaires

  1. ouvrir plusieurs fichiers texte
    Par styliebeuf dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 09/11/2006, 22h10
  2. Réponses: 8
    Dernier message: 14/09/2006, 16h43
  3. [VB6] Ouverture de plusieurs fichiers textes
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/09/2006, 10h45
  4. [INFO] Traitement d'un fichier texte
    Par doudine dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 25/04/2006, 09h23
  5. Comment récupérer le contenu de plusieurs fichiers textes ?
    Par calimero2611 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 15h45

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