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 :

Formatage fichiers texte avec Gnu-sed


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Formatage fichiers texte avec Gnu-sed
    Bonjour,
    Utilisant sed régulièrement sous Win32, je n'arrive pas à reformater 1 fichier multi-ligne dont le contenu de chaque ligne à la même structure en n fichiers.
    Mon fichier de départ possède n ligne, dont 1 ex ci-dessous :

    <>$<Société "TOTO-'#$?/\<>TOTO">$<27.12.2007>$<21.04.2008>$<LOGO1.TIF/LOGO2.TIF/LOGO3.TIF/>$<VENTE>$<37745>

    Je souhaite obtenir n fichiers en résultats, dont celui correspondant à cette ligne :

    KEY1:Société "TOTO-'#$?/\<>TOTO"
    KEY2:27.12.2007
    KEY3:21.04.2008
    KEY4:VENTE
    KEY5:37745
    LOGO1.TIF
    LOGO2.TIF
    LOGO3.TIF

    J'utilise Sed et les regexpr mais je suis pas pro en gestion de pattern space aussi je rame bien...

    Merci pour vos contributions.

  2. #2
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Petit programme awk, pas sed:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    awk -F '[>][$][<]' '
    BEGIN{OFS="\n"; file="file_"}
    {
      print "KEY1:" $2, "KEY2:" $3, "KEY3:" $4, "KEY4:" $6, "KEY5:" substr($7, 1 , length($7)-1) > file NR
      s=split($5, a, "/"); for (i=1; i<=s; i++) {print a[i] > file NR}
    }' file_in
    • Je ne sais pas définir le séparateur de champ '>$<' autrement que par: [>][$][<]. Parce que faire awk -F '>$<' ne fonctionne pas. Une idée dans l'assistance?
    • les fichiers de sortie se nommeront file_1, file_2...

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci de la reponse, le pb est que j'utilise une version de GnuSed sous Win32 et n'ai pas awk, à moins qu'il existe une version Win32.
    Je me débrouille avec les moyens du bord...MsDos commande For entre autre..

  4. #4
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Je ne connais pas Windows, mais gawk, ça ressemble furieusement à ce que tu cherches, non? Et pourquoi relancer un fil sur le même problème?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Je ne sais pas définir le séparateur de champ '>$<' autrement que par: [>][$][<]. Parce que faire awk -F '>$<' ne fonctionne pas. Une idée dans l'assistance?
    Avec un double échappement comme sur les voitures de frimeurs?


  6. #6
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Tidjou, j'ai essaye les echappements dans tous les sens, mais pas le double echappement. A ajouter a ma collection: echappement libre, carbu double corps, "The Jacky Touch", lumiere bleue par dessous, volant en moumoute...

    Merci Ripat (¿Tapir?)

Discussions similaires

  1. nommer un fichier texte avec la date du jour
    Par avantoux dans le forum Windows
    Réponses: 4
    Dernier message: 02/02/2006, 09h57
  2. Comment parcourir un fichier texte avec une boucle ?
    Par kikica dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 17h13
  3. Fichier texte avec codage non standard
    Par giloutho dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2005, 19h31
  4. Imprimer un fichier texte avec un script vbs
    Par Persons dans le forum Windows
    Réponses: 3
    Dernier message: 23/12/2004, 16h47
  5. Decoupage d'un fichier texte avec cut
    Par tesla dans le forum Linux
    Réponses: 3
    Dernier message: 28/06/2004, 15h39

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