Bonjour,
J'ai un fichier qui me donne l'ordre de mes clés:
J'ai un fichier à trier contenant une liste d'associations clé-valeur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6$ cat cles.txt UN DEUX TROIS QUATRE CINQ
Je voudrais trier ce fichier dans l'ordre des clés du fichier de clés pour obtenir:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6$ cat file.txt CINQ pas_du_tout TROIS passionnement DEUX beaucoup QUATRE a_la_folie UN un_peu
Connaissez-vous une commande qui fasse ça?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $ tri-selon cles.txt file.txt UN un_peu DEUX beaucoup TROIS passionnement QUATRE a_la_folie CINQ pas_du_tout
Sinon, je peux toujours faire:
mais c'est un peu en O(n*n)
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ for cle in $(cat cles.txt); do egrep "^$cle " file.txt; done
ou bien bidouiller un truc du genre:
mais ça devient un peu plus compliqué si file.txt contient plusieurs colonnes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 cat file.txt \ | while read cle valeur ; do eval $cle=$valeur done for cle in $(cat cles.txt); do eval echo $cle \$$cle done
Votre avis?
Merci d'avance
)jack(
Partager