Ligne en double dans un fichier

dino -  
 dino -
Bonjour,

J'ai plusieurs fichiers qui ont tous la meme entete mais pas le reste ,je dois les concatener mais garder juste une entete.
J'ai essayer avec la commande "uniq" j'y arrive pas ....

Si qlq a une idée ..
Merci a tous

5 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Une solution...

    $ head fich*
    ==> fich1 <==
    En-tête commun
    fichier 1
    ligne1
    ligne2

    ==> fich2 <==
    En-tête commun
    fichier 2
    ligne1
    ligne2

    ==> fich3 <==
    En-tête commun
    fichier 3
    ligne1
    ligne2

    ==> fich4 <==
    En-tête commun
    fichier 4
    ligne1
    ligne2

    $ sed '1!{/^En-tête/d}' fich*
    En-tête commun
    fichier 1
    ligne1
    ligne2
    fichier 2
    ligne1
    ligne2
    fichier 3
    ligne1
    ligne2
    fichier 4
    ligne1
    ligne2

    0
  2. dino
     
    Salut,
    Merci pour ta réponse.
    Mais mon entête est un ensemble de nom :
    Fichier1 :
    NOM PRENOM AGE SEXE .....
    AAA BBB 36 M
    Fichier 2
    NOM PRENOM AGE SEXE
    CCC DDD 40 M
    .
    .
    .

    Le fichier total doit contenir
    Entete : NOM PRENOM AGE SEXE
    +
    le reste des info.

    Avec le sed j'ai le message d'erreur suivant :
    sed: 0602-404 Function cannot be parsed.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Mais mon entête est un ensemble de nom :
      NOM PRENOM AGE SEXE .....
      Suffit de changer
      /^En-tête/
      par
      /^NOM/
      dans mon code :
      $ head fich*
      ==> fich1 <==
      NOM PRENOM AGE SEXE
      fichier 1
      ligne1
      ligne2

      ==> fich2 <==
      NOM PRENOM AGE SEXE
      fichier 2
      ligne1
      ligne2

      ==> fich3 <==
      NOM PRENOM AGE SEXE
      fichier 3
      ligne1
      ligne2

      ==> fich4 <==
      NOM PRENOM AGE SEXE
      fichier 4
      ligne1
      ligne2

      $ sed '1!{/^NOM/d}' fich*
      NOM PRENOM AGE SEXE
      fichier 1
      ligne1
      ligne2
      fichier 2
      ligne1
      ligne2
      fichier 3
      ligne1
      ligne2
      fichier 4
      ligne1
      ligne2


      avec le sed j'ai le message d'erreur suivant :
      sed: 0602-404 Function cannot be parsed.
      Quel système ?
      Quelle version de sed ?
      0
  3. dino
     
    la version machine
    AIX merlot 1 7
    Le Sed je ne sais pas :-(
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Je me doutais un peu du système ;-(

      Là je ne saurai te dire pourquoi tu as cette erreur ;-(

      Essaie la même commande que sur un seul fichier (au cas ou ce serait fich* qui serait responsable)
      0
  4. dino
     
    T'aurais pas sous le coude une commande pour suprimer un ligne ?
    l'idée est de la supprimer du fichier concatener et de l'ajouter a la fin avec la commande :sed '1!{/^En-tête/d}' fich* ....

    qu'est ce que t'en pense ?
    Merci
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      $ cat fich1
      NOM PRENOM AGE SEXE
      fichier 1
      ligne1
      ligne2

      $ sed '1d' fich1
      fichier 1
      ligne1
      ligne2


      Dans le même esprit, mais à savoir si ça marcherait sur ton système :

      $ head fich*
      ==> fich1 <==
      NOM PRENOM AGE SEXE
      fichier 1
      ligne1
      ligne2

      ==> fich2 <==
      NOM PRENOM AGE SEXE
      fichier 2
      ligne1
      ligne2

      ==> fich3 <==
      NOM PRENOM AGE SEXE
      fichier 3
      ligne1
      ligne2

      ==> fich4 <==
      NOM PRENOM AGE SEXE
      fichier 4
      ligne1
      ligne2

      $ sed -s '1d' fich*
      fichier 1
      ligne1
      ligne2
      fichier 2
      ligne1
      ligne2
      fichier 3
      ligne1
      ligne2
      fichier 4
      ligne1
      ligne2
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Essaye comme ça :
      cat fich* | sed '1!{/^NOM/d}'
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dino
     
    ca ne passe pas ,comme mon extraction est une chaine de caracter ...

    j'ai essayer d'extraire la premier ligne et l'envoyer ves un fichier temporraire
    +
    afficher le fichier a partir de la 2 ligne vers un autre fichier temporraire
    +
    Concatener ces fichiers
    + ajouter la ligne extraite

    C'est long mais c'est ce que j'ai trouvé ....:-(

    Merci beaucoup pour ton implication.
    0