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

Linux Discussion :

comment concatener des lignes


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut comment concatener des lignes
    bonjour,
    Par while read, je lis les lignes d'un fichier
    si je trouve un "=", je lmets la ligne dans un autre fichier
    sinon je lis la ligne suivante jusqu'à trouver un "="

    Mais comment garder en mémoire la ligne que je viens de lire, et concaténer avec la ligne suivante jusqu'à trouver le caractère '='.

    merci de votre aide
    @+

  2. #2
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Par défaut
    Je ne comprends pas ton commentaire sur la concaténation. Qu'est ce que tu as besoin de concaténer ? Pourquoi veux-tu garder une ligne en mémoire ?

    Ce que tu cherches à faire, c'est bien ça non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "=" fichiersource | head -n 1 > fichierdestination
    On peut faire moins bourrin en affinant, mais comme je ne suis pas sûr de ce que tu cherches exactement...

  3. #3
    Membre éprouvé Avatar de siegfried64
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Par défaut
    je pense pas que tu aura besoin de garder la ligne en memoire, en cas de non existence de "=" tu touche pas au fichier

  4. #4
    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
    Peux-tu nous poster un exemple de fichier en entrée et du résultat souhaité

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut re
    bonjour
    je m'explique
    voici un exemple de fichier sur plusieurs lignes

    200712RC 0823 A 2601T 230V300 8000N -W020///
    S5///
    B00/ /////U 096 992=
    20071208233 0823 015G27T 9DV N 106 97
    OV0/// 03 Q00=

    et je voudrais obtenir :

    200712RC 0823 A 2601T 230V300 8000N -W020/// S5/// B00/ /////U 096 992= 20071208233 0823 015G27T 9DV N 106 97 OV0/// 03 Q00=

    cad que quant je trouve une ligne qui finit par "=" ,je concatene avec celle(s) qui est avant. Tant que je ne trouve pas de "=" je lis la ligne suivante...
    merci

  6. #6
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Par défaut
    Heu je dois avoir du mal, mais j'ai l'impression que là tu as concaténé toutes tes lignes sans te préoccuper du signe "=".

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut re
    bonjour autant pour moi ...à la ligne apres chaque "="
    je m'explique
    voici un exemple de fichier sur plusieurs lignes

    200712RC 0823 A 2601T 230V300 8000N -W020///
    S5///
    B00/ /////U 096 992=
    20071208233 0823 015G27T 9DV N 106 97
    OV0/// 03 Q00=

    et je voudrais obtenir :

    200712RC 0823 A 2601T 230V300 8000N -W020/// S5/// B00/ /////U 096 992=
    20071208233 0823 015G27T 9DV N 106 97 OV0/// 03 Q00=

    cad que quant je trouve une ligne qui finit par "=" ,je concatene avec celle(s) qui est avant. Tant que je ne trouve pas de "=" je lis la ligne suivante...
    merci

  8. #8
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Par défaut
    J'en suis à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN {RS="";} {gsub(/[^=]\n/,""); print $0}'
    Mon problème, c'est que ça détruit le dernier caractère de chaque ligne ne finissant pas par '='. En effet, j'ai besoin de mettre [^=] dans le motif de gsub...

    Si quelque sait comment gérer les parenthèses capturantes avec gsub, ce serait parfait.

    un truc du genre

  9. #9
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e :a -e '/=$/! N; s/\n/ /; ta' liste.txt
    Résultat (avec sed du GNU)
    http://sed.sourceforge.net/sed1line_fr.html


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    200712RC 0823 A 2601T 230V300 8000N -W020/// S5/// B00/ /////U 096 992=
    20071208233 0823 015G27T 9DV N 106 97 OV0/// 03 Q00=

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/08/2008, 15h25
  2. [Requete] Comment ignorer des lignes avec un LOAD DATA
    Par frangin2003 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2005, 12h14
  3. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40
  4. Réponses: 4
    Dernier message: 02/09/2004, 14h50

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