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 :

Concaténer deux fichiers Ligne/Ligne avec SH [FAQ]


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Concaténer deux fichiers Ligne/Ligne avec SH
    Bonjour,

    J'ai deux fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Guillaume
    Robert
    ...
    l'autre :


    Et en fait, je voudrais avoir ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Guillaume DUPONT
    Robert BIDOCHON
    ...
    Ce qu'il me faudrait, c'est prendre la ligne 1 du premier fichier, lui coller au bout la ligne 1 de l'autre fichier, retour à la ligne...
    Et mon problème, c'est que ne sais ouvrir deux fichiers en même temps

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Hi !

    Si j'ai bien compris, tu veux concaténer 2 fichiers dans un des 2.
    La commande cat est là pour ça :
    cat fic1>>fic2
    Avec cette commande, tu concaténe (bonne conjugaison ?) à la suite du fichier 2 l'ensemble du fichier 1 sans effacer ce qu'il y avait précédemment dans le fichier 2.

    J'espère que ça t'a aidé.

    @ +
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Nan, justement, c'est pas le premier fichier, puis le deuxième.
    C'est la première ligne du premier avec la premiere ligne du deuxième,
    la ligne 2 du 1er avec la ligne 2 du 2ème,
    la ligne 3 du 1er avec la ligne 3 du 2ème
    .....

  4. #4
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Citation Envoyé par guiltouf
    Nan, justement, c'est pas le premier fichier, puis le deuxième.
    C'est la première ligne du premier avec la premiere ligne du deuxième,
    la ligne 2 du 1er avec la ligne 2 du 2ème,
    la ligne 3 du 1er avec la ligne 3 du 2ème
    .....
    J ai repondu a cette question ici
    meme avec le script commente en plus

    j espere que ca va t aider

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Avec le awk :

    awk '{printf("%s:", $0)}' $fileMdp $fileRho

    => Ca me donne pas un truc gégéne nyal... Tout est sur la même ligne, et je chope pas tous les champs du deuxième fichier.

    Avec ton script qui était dans le post que tu avais fait précedemment, c'est un peu trop récursif pour moi : pour chaque ligne de mon fichier, il me met la ligne 1 du 1er fichier avec toutes les lignes du 2ème, la ligne 2 avec toutes les lignes du 2ème...

    Et y'a pas une syntaxe de awk qui ferait ça tranquille ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    En fait, j'ai contourné le problème en faisant ainsi :

    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
    	imdp=0
    	irho=0
    	cat $fileMdp | while read lineMdp
    	do
    		irho=0
    		cat $fileRho | while read lineRho
    		do
    			if [ $imdp -eq $irho ]
    			then
    				echo "$lineMdp$lineRho" >> $filePwdPerso
    			fi
    			irho=`expr $irho + 1`
    		done	
    		imdp=`expr $imdp + 1`
    	done
    Ouf ! Merci nyal pour ton aide

  7. #7
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Citation Envoyé par guiltouf
    En fait, j'ai contourné le problème en faisant ainsi :

    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
    	imdp=0
    	irho=0
    	cat $fileMdp | while read lineMdp
    	do
    		irho=0
    		cat $fileRho | while read lineRho
    		do
    			if [ $imdp -eq $irho ]
    			then
    				echo "$lineMdp$lineRho" >> $filePwdPerso
    			fi
    			irho=`expr $irho + 1`
    		done	
    		imdp=`expr $imdp + 1`
    	done
    Ouf ! Merci nyal pour ton aide
    De rien.

    Ton probleme etait beaucoup plus simple que l autres

    voici une autre 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
     
    #!/bin/sh                                                                       
     
    FILE1=var0
    FILE2=var2
    FILE_TMP=titi
    FILE_DST=plop
     
    cat $FILE1 | nl > $FILE_TMP
    cat $FILE2 | nl >> $FILE_TMP
     
    rm -f -- $FILE_DST
    i=1
    while :
    do
        # attention o copier coller avec les tab                                    
      # tabulation apres le $i                                                      
      var=`cat $FILE_TMP | grep "     $i    " | tr -d "\n" | sed "s/     $i / /2" |\
     sed "s/     $i  //"`
      if [ -z "$var" ] ; then
          break
      fi
      echo $var >> $FILE_DST
      i=`expr $i + 1`
    done
    rm -f -- $FILE_TMP
    exit 0
    On peut faire cela plus simplement je pense. Une autre emthode qui peut etre mieux. A tester

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Proposition d'un code par awk :
    (C'est du bricolage mais ca pourra toujours depanner)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    awk '
    {buff [NR] = $0 }
    END { while ( i <= (NR/2) ) 
    {print buff[i] ":" buff[i+NR/2];
     i++ ;}
     }' Texte1.txt Texte2.txt > Result.txt
    le desavantage de cette methode est qu'une ligne de trop apparait au debut du fichier, on procede donc a son elimination ; par exemple :

    voili voilou

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

Discussions similaires

  1. Lire un fichier csv ligne à ligne sous Talend
    Par NFHnv dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 13/03/2015, 14h57
  2. Réponses: 13
    Dernier message: 15/10/2013, 00h23
  3. Problème de lecture d'un fichier texte ligne à ligne
    Par petit rabot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/05/2011, 14h04
  4. [AC-2000] Export Access vers fichier txt ligne à ligne
    Par jorge54 dans le forum VBA Access
    Réponses: 14
    Dernier message: 23/01/2010, 02h15
  5. Réponses: 0
    Dernier message: 24/04/2008, 15h34

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