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 :

[sed][awk] Rajout sur lignes details le titre du paragraphe


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut [sed][awk] Rajout sur lignes details le titre du paragraphe
    Bonjour,

    J'ai un fichier texte composé de la manière suivante :

    [1] Devise1
    [D] col1 col2 col3 col4
    [D] col1 col2 col3 col4

    [1] Devise2
    [D] col2 col2 col3 col4
    [D] col2 col2 col3 col4


    J'aimerais obtenir le fichier suivant :

    [D] col1 col2 col3 col4 Devise1
    [D] col1 col2 col3 col4 Devise1
    [D] col2 col2 col3 col4 Devise2
    [D] col2 col2 col3 col4 Devise2

    J'arrive à le faire par un cat du fichier et un test sequentiel des 3 premiers caractères de chaque ligne ([1] ou [D]).
    (si [1] je gére une variable $Devise, si [D] je réécris la ligne dans un fichier en y rajoutant $Devise ).
    Mais le pb est que mon fichier est énorme 150 Mb et cette méthode est trop coûteuse en temps.

    Une idée plus rapide avec sed ou awk ou combinaison de grep,sed, awk ???
    J'avoue avoir cherché et ne pas avoir trouvé.

    Merci d'avance pour votre aide !
    Mimi

  2. #2
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Solution en awk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    awk '
    {
    	if ($1=="[1]") 
    	{
    		devise=$2 
    	       	next
    	}
    	if ($1=="[D]")
    	{
    		print $0, devise 
    	       	next
    	}
    } ' liste.txt

  3. #3
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    En Sed, il suffit de faire ça (en passant l'option -n) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /^\[1\]/{s/^...//;h;d;}
    /^\[D\]/{G;s/\n//p;}
    Je ne vois pas bien comment on pourrait optimiser (ou alors, en le faisant à la main, en C/C++...).

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut
    LLB et BlaireauOne, merci beaucoup pour vos réponses.
    J'essaie et je vous tiens au courant.

    Cdt
    Mimi

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut
    J'ai opté pour la solution sed -n, qui est plus rapide et qui fonctionne à merveille.
    Merci beaucoup !

    Mimi57

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

Discussions similaires

  1. 2 logos sur la même ligne sur la page de titre
    Par the_reward dans le forum Beamer
    Réponses: 3
    Dernier message: 15/09/2013, 22h55
  2. fusionner plusieurs lignes en une seule (sed, awk..)
    Par sab113 dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 10/12/2012, 07h54
  3. Réponses: 11
    Dernier message: 04/02/2012, 18h24
  4. Recherche titre sur ligne et copie colonne
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/07/2006, 15h31
  5. Tableau - détails sur lignes et colonnes
    Par BiM dans le forum BIRT
    Réponses: 2
    Dernier message: 05/07/2006, 11h51

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