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

Unix Discussion :

scinder et nommer un fichier avec awk


Sujet :

Unix

  1. #1
    Membre habitué Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Points : 152
    Points
    152
    Par défaut scinder et nommer un fichier avec awk
    Bonjour


    Soit ce script splitfi0.sh base sur awk

    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
    FileIn=$1
    awk -v FILEIN=$1 '
    BEGIN {
    Ctr=1
    FileNameOUt
    OutFile=FILEIN"_"Ctr
    emmeteur=""
    type=""
    norme=""
    }
    {
     
    if ($1 ~ /^0128000SL/) {
    	emmeteur = substr($0,10,20)
    	type =substr($0,52,2)
           }
    print $0 > OutFile
     
                    if ($1 ~ /^0128999SL/) {
                                   Ctr++
                                   OutFile=FILEIN"_"Ctr"_"emmeteur"_"type
     
                    }
    }
    END {
                    print "* "Ctr" fichier(s) créés"
    } '  $FileIn

    il se lance sous linux avec bash splitfi0.sh RGAPR693
    RGAPR693 est un fichier
    il contient
    des éléments a extraire dans des fichiers séparés

    début par 0128000SL
    La dernier ligne début par 0128999SL.
    il y a plusieurs lignes sous la forme

    0128000SL..........................
    d.............................................................................y
    0128999SL..........................
    0128000SL..........................
    d.............................................................................y
    0128999SL..........................
    0128000SL..........................
    d.............................................................................y
    0128999SL.......................... 0128000SL..........................
    d.............................................................................y
    0128999SL.......................... 0128000SL..........................
    d.............................................................................y
    0128999SL..........................

    il me faut eclater en fichier séparé les zones de la forme*
    0128000SL..........................
    d.............................................................................y
    0128999SL..........................


    L'éclatement avec la premier version fonction la voici (elle fonctionne)

    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
    FileIn=$1
    awk -v FILEIN=$1 '
    BEGIN {
    Ctr=1
    FileNameOUt
    OutFile=FILEIN"_"Ctr
    emmeteur=""
    type=""
    norme=""
    }
    {
     
    print $0 > OutFile
     
                    if ($1 ~ /^0128999SL/) {
                                   Ctr++
                                   OutFile=FILEIN"_"Ctr
     
                    }
    }
    END {
                    print "* "Ctr" fichier(s) créés"
    } '  $FileIn
    Dans nouvelle version
    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
    FileIn=$1
    awk -v FILEIN=$1 '
    BEGIN {
    Ctr=1
    FileNameOUt
    OutFile=FILEIN"_"Ctr
    emmeteur=""
    type=""
    norme=""
    }
    {
     
    if ($1 ~ /^0128000SL/) {
    	emmeteur = substr($0,10,20)
    	type =substr($0,52,2)
           }
    print $0 > OutFile
     
                    if ($1 ~ /^0128999SL/) {
                                   Ctr++
                                   OutFile=FILEIN"_"Ctr"_"emmeteur"_"type
     
                    }
    }
    END {
                    print "* "Ctr" fichier(s) créés"
    } '  $FileIn
    Mon soucis le premier fichier n'est pas correctement renommer.
    et de plus lorsque le fichier est renommé le nommage de variable emmerdeur et type n'est pas toujours correcte.

    une petite aide serait bien venu

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    variable emmerdeur
    C'est la variable 'emetteur' que tu appelles comme ça ??? Pour cela, voir directement avec Gilles de la Tourette.

    Mon soucis le premier fichier n'est pas correctement renommer.
    Quelle est la valeur attendue ?
    Quelle est la valeur obtenue ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. parcourir 2 fichiers avec awk, et comparer 2 champs
    Par morphdown dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/07/2013, 11h03
  2. traiter 2 fichier avec awk
    Par zcoul dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/03/2008, 18h28
  3. Lire un fichier avec awk
    Par lili2704 dans le forum Linux
    Réponses: 4
    Dernier message: 18/01/2007, 15h53
  4. problème formatage de fichier avec awk
    Par nenekes dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 02/11/2006, 12h53
  5. Formatage de fichier avec awk
    Par sam56 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 12/10/2006, 11h04

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