Concatener deux lignes sur une seul d'un fichier

Résolu/Fermé
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 13 févr. 2013 à 14:12
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 - 1 mars 2013 à 16:30
Bonjour,

Je suis débutant en script shell.
Je vous explique ce que j'ai et ce que j'aimerai obtenir.
J'ai donc un fichier de longueur fixe sans séparateur en entrée construit de la sorte.


identifiant1donnée1
identifiant1donnée2
identifiant2donnée1
identifiant2donnée2

je souhaiterai avoir ceux-ci :

identifiant1donnée1donnée2
identifiant2donnée1donnée2

Quelqu'un aurait une idée s'il vous plait ?

Merci d'avance

A voir également:

3 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
13 févr. 2013 à 14:40
hello
$ awk 'BEGIN{FIELDWIDTHS="12 8"} {t[$1]=t[$1] $2} END{for(n in t)print n t[n]}'  fichie
identifiant1donnée1donnée2
identifiant2donnée1donnée2
$ 
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 13/02/2013 à 15:25
mon awk traite mal les caractères UTF avec FIELDWIDtHS
essayer
$ sed -r 's/^(.{12})/\1 /' fichier | awk '{t[$1]=t[$1] $2} END{for(n in t)print n t[n]}' 
identifiant1donnée1donnée2 
identifiant2donnée1donnée2 
$  
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 févr. 2013 à 15:38
Salut,

Tant qu'à utiliser sed...

$ sed -r 'N;s/(.*)\n.{12}(.*)/\1\2/' brol 
identifiant1donnée1donnée2
identifiant2donnée1donnée2

;-))
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
13 févr. 2013 à 16:12
awk doit laver cet affront :-)
$ awk '{c1=substr($0, 1, 12); c2=substr($0, 13, 7); t[c1]=t[c1] c2} END{for(n in t)print n t[n]}'  fichier
identifiant1donnée1donnée2
identifiant2donnée1donnée2
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 févr. 2013 à 16:14
;-))
0
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 1
Modifié par JsuisNul le 13/02/2013 à 16:05
Merci à tous pour vos réponses très rapides !!!

je vais tester et vous faire un retour rapidement.

Merci encore !!

;-))
0
JsuisNul Messages postés 122 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 14 février 2024 1
1 mars 2013 à 16:30
Merci à tous pour votre aide mais mon chef à changer d'avis donc plus de script...
:-((
A+
0