Bonjour,
Je voudrais fusionner deux lignes prévenant de deux fichiers différents.
C'est pas la même chose que fait la commande join.
Exemple:
fichier1:
aaa ccc eee
fichier2:
bbb ddd
le resultat:
aaabbbcccdddeee
Merci de votre aide
Version imprimable
Bonjour,
Je voudrais fusionner deux lignes prévenant de deux fichiers différents.
C'est pas la même chose que fait la commande join.
Exemple:
fichier1:
aaa ccc eee
fichier2:
bbb ddd
le resultat:
aaabbbcccdddeee
Merci de votre aide
Bonjour,
les fichiers ont un nombre de lignes identique ?
avec awk :
lire les lignes de chaque fichier, utiliser spit() avec des noms de tableaux différents, et reconstruire la ligne souhaitée avec chaque élément des tableaux
...
?
un coup de baguette magique, quoi :mouarf:
Bonjour,
Code:
1
2
3
4
5
6
7 $ cat quinconce1.txt aaa ccc eee $ cat quinconce2.txt bbb ddd $ awk 'NR==FNR{a1[FNR]=$1;a2[FNR]=$2;next;} {print $1""a1[FNR]""$2""a2[FNR]""$3;}' quinconce2.txt quinconce1.txt aaabbbcccdddeee $
Bonjour,
Ou un trie lexicale:aie::
Code:
1
2
3
4
5
6 $ cat f1.txt aaa ccc eee $ cat f2.txt bbb ddd $ awk -v RS=" " '$0=$1' f1.txt f2.txt | sort | awk -v ORS="" '$0=$1;END{print "\n"}' aaabbbcccdddeee
:ptdr:
Ou alors en pur bash:
:aie:Code:
1
2
3
4
5
6
7
8 for i in a b c d e do for j in 1 2 3 do echo -n "$i" done done echo ""
parce que je privilégie spontanément l'emploi d'un seul outil plutôt que d'utiliser des pipes :?Citation:
pourquoi faire simple quand...
mais pour ce que tu fais de awk, je recommanderais davantage un appel (plus léger ?) à cut.
"spontanément" est le terme de trop. Peut-être que parfois, deux outils appelés simplements (même liés par un pipe) seront à privilégier plutôt qu'utiliser un outil plus complexe et avec alors des instructions là aussi plus complexes. Un code est plus souvent lu qu'écrit et ça devrait aussi entrer en considération...
Ca j'avais essayé (je présume que tu penses à ceci: paste fichier1 fichier2 |cut -f1,4,2,5,3 -d' '). Le problème, c'est que si tu demandes à cut le champ 2,1 ; il te les donne mais uniquement dans l'ordre d'origine (champ 1 puis champ 2). Et donc on se retrouve avec un simple paste...
:koi: c'est moi, dans un élan spontané, qui emploie un seul outil. Je ne présume pas du comportement de telle ou telle manière de faire. :aie:Citation:
"spontanément" est le terme de trop.
c'est quoi ce délire ? cut coupe (affiche certains champs, mais pas d'autres), mais ne permet pas de réorganiser les champs !Code:
1
2 echo "a b" | cut -f 2,1 a b
:evil:
Attention à ne pas oublier le délimiteur ;) (mais le résultat reste le même)
Ben que puis-je te dire ? Remarque, manifestement ce besoin n'est pas avéré (la preuve: tu n'as jamais cherché à l'utiliser pour réorganiser les champs sinon tu t'en serais rendu compte bien avant aujourd'hui :lol:)
Donc en effet ce n'est pas son rôle. Ce qui n'est pas très grave puisque pour les combiner les rôles de chacun et produire des résultats élaborés on a les... pipes ;)