Problème commande script shell JOIN
Résolu/Fermé
moi.néo
Messages postés
1132
Date d'inscription
vendredi 17 septembre 2004
Statut
Membre
Dernière intervention
9 juin 2011
-
3 déc. 2009 à 21:45
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 8 août 2013 à 10:22
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 8 août 2013 à 10:22
A voir également:
- Problème commande script shell JOIN
- Invite de commande - Guide
- Script vidéo youtube - Guide
- Commande terminal mac - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Commande dism - Guide
8 réponses
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
4 déc. 2009 à 07:55
4 déc. 2009 à 07:55
autre variante
$ cat f1 f2 | awk '{x[$1]=x[$1] " " $2}; END {for(n in x)print n, x[n]}'|sort -n 3 10.000000000 5 13.000000000 8 19.000000000 12 31.000000000 23 55.007399911 55.000000000 24 55.012110862 55.007399911 25 55.032641812 55.012110862 26 55.036972761 55.032641812 27 55.057383709 55.036972761 28 55.092211573 55.036972761 29 55.061694655 55.057383709 30 55.104722505 55.061694655 31 55.092211573 32 55.104722505 33 55.109133448 34 55.121184403 $
Utilisateur anonyme
3 déc. 2009 à 22:59
3 déc. 2009 à 22:59
J'observe que si f2 comence à 23, ça fonctionne
__
La blague c'est ~
Il y a 10 types de personnes : l'un qui connait le binaire, et l'autre...
__
La blague c'est ~
Il y a 10 types de personnes : l'un qui connait le binaire, et l'autre...
moi.néo
Messages postés
1132
Date d'inscription
vendredi 17 septembre 2004
Statut
Membre
Dernière intervention
9 juin 2011
86
3 déc. 2009 à 23:33
3 déc. 2009 à 23:33
Oui, j'ai remarqué ça aussi, alors j'avais essayé, juste après de créer les fichiers d'ajouter une première ligne commune (ex : "1 12").
Mais ça marche pas :s
Mais ça marche pas :s
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
4 déc. 2009 à 07:21
4 déc. 2009 à 07:21
hello
le but c'est d'avoir ?
23 55.007399911 55.000000000
24 55.012110862 55.007399911
25 55.032641812 55.012110862
26 55.036972761 55.032641812
27 55.057383709 55.036972761
28 55.092211573 55.036972761
29 55.061694655 55.057383709
30 55.104722505 55.061694655
le but c'est d'avoir ?
23 55.007399911 55.000000000
24 55.012110862 55.007399911
25 55.032641812 55.012110862
26 55.036972761 55.032641812
27 55.057383709 55.036972761
28 55.092211573 55.036972761
29 55.061694655 55.057383709
30 55.104722505 55.061694655
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 déc. 2009 à 07:40
4 déc. 2009 à 07:40
Salut,
C'est un peu biscornu mais ça marche à condition que le 1er champ ne comporte que 2 caractères ;-\
;-))
C'est un peu biscornu mais ça marche à condition que le 1er champ ne comporte que 2 caractères ;-\
sort -r f1 f2 | sort | uniq -w 2 -d | join f1 -
;-))
moi.néo
Messages postés
1132
Date d'inscription
vendredi 17 septembre 2004
Statut
Membre
Dernière intervention
9 juin 2011
86
4 déc. 2009 à 18:46
4 déc. 2009 à 18:46
@jipicy : beau bricolage mais ça marche pas dans tous les cas :s
@dubcek : oui c'est bien ça sauf qu'il faut garder que les lignes à 3 champs, les autres servent plus.
Peut tu m'expliquer ton awk, je comprend pas ?
Merci à vous.
@dubcek : oui c'est bien ça sauf qu'il faut garder que les lignes à 3 champs, les autres servent plus.
Peut tu m'expliquer ton awk, je comprend pas ?
Merci à vous.
moi.néo
Messages postés
1132
Date d'inscription
vendredi 17 septembre 2004
Statut
Membre
Dernière intervention
9 juin 2011
86
4 déc. 2009 à 20:34
4 déc. 2009 à 20:34
Bon, en fait j'ai compris, on doit trier les données par ordre lexicographique (et pas numérique) pour que JOIN fonctionne correctement ;)
@dubcek : je veux bien que tu m'expliques ton awk, même si le problème est résolu :)
@dubcek : je veux bien que tu m'expliques ton awk, même si le problème est résolu :)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
8 août 2013 à 10:22
8 août 2013 à 10:22
Salut,
Quelques années après....
;-))
Quelques années après....
$ join -j 1 f1 <(sort -k 1b,1 f2) 23 55.007399911 55.000000000 24 55.012110862 55.007399911 25 55.032641812 55.012110862 26 55.036972761 55.032641812 27 55.057383709 55.036972761 28 55.092211573 55.036972761 29 55.061694655 55.057383709 30 55.104722505 55.061694655
;-))
moi.néo
Messages postés
1132
Date d'inscription
vendredi 17 septembre 2004
Statut
Membre
Dernière intervention
9 juin 2011
86
6 déc. 2009 à 09:42
6 déc. 2009 à 09:42
Ok, merci pour l'explication ;)
5 déc. 2009 à 13:11
pour chaque ligne lue par awk
y[$1]=length(x[$1]) on sauve dans un tableau y indexé par le champ 1 la longueur du même élément du tableau x, 0 si il est vide
x[$1]=x[$1] " " $2} dans un tableau x, on ajoute le champ 2 à ce que contient déja x, si il avait quelque chose
à la fin
END {for(n in x)if(y[n])print n, x[n]} on imprime chaque élément de x, si le contenu du même index de y n'est pas nul
8 août 2013 à 09:36
8 août 2013 à 09:49
Les explications sont là. Hormis le début (longueur), le reste est pareil.