Joindre 2 fichiers sur champs communs

Résolu/Fermé
nekomajin31 Messages postés 8 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 1 avril 2014 - 1 avril 2014 à 09:56
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 1 avril 2014 à 12:20
bonjour,

j'ai 2 textedit de la sorte :

A1 a
A2 c
A3 e
A4 d

& pour mon deuxième :

a 10
b 31
c 12
e 11

, j'aimerai avoir un shell , ou un awk, qui écrit les valeurs (10, 31...) dans mon premier shell, en associant , de tel sorte :

A1 a 10
A2 c 12
...
(une getline m'arrangerait..)

merci d'avance !
A voir également:

2 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
1 avril 2014 à 12:20
hjello
avec awk
$ awk 'FNR==NR {t[$1]=$2; next} x=t[$2] {print $0, x}' fichier2  fichier1
A1 a 10
A2 c 12
A3 e 11
2
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 406
1 avril 2014 à 10:04
Salut,

Il existe des commandes natives qui font ça très bien, et particulièrement la commande
join
:

$ head f*
==> f1 <==
A1 a
A2 c
A3 e
A4 d

==> f2 <==
a 10
b 31
c 12
e 11

$ join --nocheck-order -1 2 -2 1 -o 1.1,1.2,2.2 f1 f2
A1 a 10
A2 c 12
A3 e 11
1
nekomajin31 Messages postés 8 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 1 avril 2014
1 avril 2014 à 10:23
bonjour, collègue 31 ^^

merci , je vais essayer ça dans la matinée !
en fait mes fichier sont assez long (centaines de ligne ) , c pr ça que j'envisageais une getline , je connaissais pas cette cmd. merci bcp
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 406
Modifié par zipe31 le 1/04/2014 à 10:35
Peut-être sera-t-il nécessaire de trier tes fichiers avant...

$ join -1 2 -2 1 -o 1.1,1.2,2.2  <(sort -k2 f1)  <(sort -k1 f2)
A1 a 10
A2 c 12
A3 e 11
0
nekomajin31 Messages postés 8 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 1 avril 2014
1 avril 2014 à 10:37
je viens d'essayer , et on le shell ne reconnait pas l'option "--nocheck-order"
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 406
1 avril 2014 à 10:39
Quel système ? Quel shell ? Quelle version de join ?

Sinon, voir ma réponse précédente...
0
nekomajin31 Messages postés 8 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 1 avril 2014
1 avril 2014 à 10:42
oui je vais faire avec ta réponse précédente.
si je fais ceci :
$ join -1 2 -2 1 -o 1.1,1.2,2.2 <(sort -k2 f1) <(sort -k1 f2) > file_3


pour avoir en sortie directement dans un fichier , le file_3 reste vide
0