Joindre ou concaténer horizontalement plusieu
Fermé
jil
-
23 mars 2012 à 11:24
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 26 mars 2012 à 09:16
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 26 mars 2012 à 09:16
A voir également:
- Joindre ou concaténer horizontalement plusieu
- Concatener deux cellules excel - Guide
- Concaténer pdf - Guide
- Inverse de concatener ✓ - Forum Excel
- Impossible de joindre un fichier sur ants ✓ - Forum Réseaux sociaux
- Diviser page word en 3 horizontalement - Forum Word
7 réponses
Salut.
Ok alors ;
@zipe : paste -d '|' *.asc | sed 's/|[^\t]*\t/\t/g' > new_fichier.txt
ça marche pas très bien. Le résultat est concluant, mais j'ai deux trois endroits dans le fichier final qui comporte des trous, des décalages, et le dernier caractère du fichier est un pipe.
@dubcek : $ ls *.asc | awk '{x="|join - "} NR<2{x="cat "} {printf x $1}' | sh
ça ça marche admirablement bien.
Je me demande pourquoi c'est si compliqué pour faire une chose si simple mais bon... tant que "quelque chose" fonctionne... ;)
Faudrait aussi voir ce qui bug avec la formule de zipe , je reste persuadé qu'on peut en faire quelque chose.
Cdlt et bonne soirée.
Ok alors ;
@zipe : paste -d '|' *.asc | sed 's/|[^\t]*\t/\t/g' > new_fichier.txt
ça marche pas très bien. Le résultat est concluant, mais j'ai deux trois endroits dans le fichier final qui comporte des trous, des décalages, et le dernier caractère du fichier est un pipe.
@dubcek : $ ls *.asc | awk '{x="|join - "} NR<2{x="cat "} {printf x $1}' | sh
ça ça marche admirablement bien.
Je me demande pourquoi c'est si compliqué pour faire une chose si simple mais bon... tant que "quelque chose" fonctionne... ;)
Faudrait aussi voir ce qui bug avec la formule de zipe , je reste persuadé qu'on peut en faire quelque chose.
Cdlt et bonne soirée.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
23 mars 2012 à 11:56
23 mars 2012 à 11:56
Salut,
Tes fichiers ont tous le même nombre de lignes et exactement la même valeur commune en début de ligne ?
Les espace entre chaque valeur sont-il toujours les mêmes (espace simple) ? Ou diffèrent-ils ?
Tes fichiers ont tous le même nombre de lignes et exactement la même valeur commune en début de ligne ?
Les espace entre chaque valeur sont-il toujours les mêmes (espace simple) ? Ou diffèrent-ils ?
Même nombre de lignes pour tous.
Même première "colonne", sparée de la deuxième par tabulation.
C'est vraiment simple. Mais je n'y arrive pas.
;) merci pour ta répose déjà...
Même première "colonne", sparée de la deuxième par tabulation.
C'est vraiment simple. Mais je n'y arrive pas.
;) merci pour ta répose déjà...
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 619
23 mars 2012 à 12:43
23 mars 2012 à 12:43
hello
$ head a1 a2 ==> a1 <== 1 ee ... 2 rr ... 3 4a ... ==> a2 <== 1 oa ... 2 0p ... 3 8ue ... $ $ awk '{n=$1 ; $1="" ; x[n]=x[n] $0} END {for(n in x) print n, x[n]}' a1 a2 1 ee ... oa ... 2 rr ... 0p ... 3 4a ... 8ue ... $
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
Modifié par zipe31 le 23/03/2012 à 13:44
Modifié par zipe31 le 23/03/2012 à 13:44
Perso j'avais :
;-))
$ head f* ==> f1 <== 1 ee bla bla 2 rr bli bli 3 4a blu blu ==> f2 <== 1 oa gla gla 2 0p gli gli 3 8ue glu glu ==> f3 <== 1 bb pla pla 2 0m pli pli 3 5f1 flu flu $ paste -d '|' f* | sed 's/|[^ ]*//g' 1 ee bla bla oa gla gla bb pla pla 2 rr bli bli 0p gli gli 0m pli pli 3 4a blu blu 8ue glu glu 5f1 flu flu $
;-))
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
23 mars 2012 à 13:59
23 mars 2012 à 13:59
Ben le "join" ne marche que sur 2 fichiers et à moins de se lancer dans une boucle... ;-\
exact ; "join" c'est pour deux fichiers que ça va bien...
Pour le reste, ta commande 'paste' ne crèe pas un nouveau fichier zipe ?!
j'ai essayé, et rien. il faudrait que ça puisse créer un nouveau fichier avec tous les petits fichiers concaténés horizontalement.
Et le problème, ce sont les noms de fichiers qui sont longs et pas très homogènes ; excepté l'extension : *.asc : th0293d24.asc par exemple.
Pour le reste, ta commande 'paste' ne crèe pas un nouveau fichier zipe ?!
j'ai essayé, et rien. il faudrait que ça puisse créer un nouveau fichier avec tous les petits fichiers concaténés horizontalement.
Et le problème, ce sont les noms de fichiers qui sont longs et pas très homogènes ; excepté l'extension : *.asc : th0293d24.asc par exemple.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
23 mars 2012 à 14:08
23 mars 2012 à 14:08
Suffit de rajouter une redirection ;-\
paste -d '|' f* | sed 's/|[^ ]*//g' > new_fichier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re salut. Merci. J'y ai pas pensé :/ .
Alors :
mais ça ne fonctionne pas. Enfin, il y a deux problèmes :
1. que deux colonnes.
2. que le premier fichier y est présent.
Alors :
paste -d '|' *.asc | sed 's/|[^ ]*//g' > new_fichier.txt
mais ça ne fonctionne pas. Enfin, il y a deux problèmes :
1. que deux colonnes.
2. que le premier fichier y est présent.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
Modifié par zipe31 le 23/03/2012 à 14:28
Modifié par zipe31 le 23/03/2012 à 14:28
On peut avoir un aperçu du contenu de tes fichiers avec mise en forme respectée (espaces, tabulations, etc.) ?
As-tu essayé la solution de dubcek ?
As-tu essayé la solution de dubcek ?
700.000000 0.000980
699.800000 0.000993
699.600000 0.001009
699.400000 0.001026
699.200000 0.001042
699.000000 0.001051
698.800000 0.001051
698.600000 0.001045
698.400000 0.001038
698.200000 0.001032
698.000000 0.001024
697.800000 0.001015
697.600000 0.001007
....
chaque fichier contient la même première colone et la sépration entre les deux colonnes sont des tabulations.
je suis entrain d'essayer de comprendre la solution de dubcek mais j'ai pas très envie d'entrer à la main le nom des trente fichiers à concaténer ... surtout qu'ils sont longs ces noms.
699.800000 0.000993
699.600000 0.001009
699.400000 0.001026
699.200000 0.001042
699.000000 0.001051
698.800000 0.001051
698.600000 0.001045
698.400000 0.001038
698.200000 0.001032
698.000000 0.001024
697.800000 0.001015
697.600000 0.001007
....
chaque fichier contient la même première colone et la sépration entre les deux colonnes sont des tabulations.
je suis entrain d'essayer de comprendre la solution de dubcek mais j'ai pas très envie d'entrer à la main le nom des trente fichiers à concaténer ... surtout qu'ils sont longs ces noms.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
23 mars 2012 à 14:35
23 mars 2012 à 14:35
mais j'ai pas très envie d'entrer à la main le nom des trente fichiers à concaténer
Tu peux user du "*" à la place ;-))
Tu peux user du "*" à la place ;-))
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 619
23 mars 2012 à 14:38
23 mars 2012 à 14:38
tout à fait
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
23 mars 2012 à 14:40
23 mars 2012 à 14:40
Sinon essaye avec :
paste -d '|' *.asc | sed 's/|[^\t]*\t/\t/g' > new_fichier.txt
Comme ceci par exemple ? :
awk '{n=$1 ; $1="" ; x[n]=x[n] $0} END {for(n in x) print n, x[n]}' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
awk '{n=$1 ; $1="" ; x[n]=x[n] $0} END {for(n in x) print n, x[n]}' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 619
23 mars 2012 à 15:09
23 mars 2012 à 15:09
non
awk ... *.asc
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 619
23 mars 2012 à 16:08
23 mars 2012 à 16:08
essayer avec join
$ ls *.asc | awk '{x="|join - "} NR<2{x="cat "} {printf x $1}' | sh
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
23 mars 2012 à 16:21
23 mars 2012 à 16:21
Waouw, ça c'est fort en chocolat ;-))
Mais tu pourrais traduire s'teuplé ?
Mon cerval sedéen a du mal à capter toutes les subtilités ;-\
Merchi ;-))
Mais tu pourrais traduire s'teuplé ?
Mon cerval sedéen a du mal à capter toutes les subtilités ;-\
Merchi ;-))
dubcek
Messages postés
18752
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
3 octobre 2024
5 619
Modifié par dubcek le 23/03/2012 à 16:45
Modifié par dubcek le 23/03/2012 à 16:45
comme join n'accepte que 2 fichiers, je construis une enfilade de commandes de join successifs , donc je joins a1 et a2, puis le résultat avec a3, etc
$ ls a* a1 a2 a3 a4 $ $ ls a* | awk '{x="|join - "} NR<2{x="cat "} {printf x $1}' cat a1|join - a2|join - a3|join - a4$ $j'ai essayé, mais pas pu : join fichier <(un truc récursif de join avec les autres fichiers)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 416
23 mars 2012 à 16:48
23 mars 2012 à 16:48
Ok merci beaucoup ;-))
Modifié par dubcek le 26/03/2012 à 08:51
on peut encore simplifier avec join:
26 mars 2012 à 09:16