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



A voir également:

5 réponses

zipe31 Messages postés 38797 Statut Contributeur 6 433
 
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
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
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
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
dino
 
la version machine
AIX merlot 1 7
Le Sed je ne sais pas :-(
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
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
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
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
$ 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
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Essaye comme ça :
cat fich* | sed '1!{/^NOM/d}'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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