Awk : tri de fichier et recuperation de ligne
flora806
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
j'utilise AWK et je voudrais effectuer un tri à partir d'un fichier txt sous forme de:
client 1;produit1;val
client 1;produit2;val
client 1;produit3;val
client 1;produit4;val
client 1;produit5;val
.....
client 2;produit1;val
client 2;produit2;val
client 2;produit3;val
....
mon tri consiste à trier par client et par val (récupérer les val supérieures) et afficher uniquement les 10 premières lignes par client:
j'ai utilisé la commande suivante:
$ awk -F";" ' { print $1,$2,$3 } ' C:/data.txt | sort -n -k 1 -r -k 3| head -n 10| cat > C:/dataTri.txt
cette commande permet uniquement d'afficher les 10 résultats triés pour un seul client et non pas pour TOUS les clients.
Merci pour votre aide.
j'utilise AWK et je voudrais effectuer un tri à partir d'un fichier txt sous forme de:
client 1;produit1;val
client 1;produit2;val
client 1;produit3;val
client 1;produit4;val
client 1;produit5;val
.....
client 2;produit1;val
client 2;produit2;val
client 2;produit3;val
....
mon tri consiste à trier par client et par val (récupérer les val supérieures) et afficher uniquement les 10 premières lignes par client:
j'ai utilisé la commande suivante:
$ awk -F";" ' { print $1,$2,$3 } ' C:/data.txt | sort -n -k 1 -r -k 3| head -n 10| cat > C:/dataTri.txt
cette commande permet uniquement d'afficher les 10 résultats triés pour un seul client et non pas pour TOUS les clients.
Merci pour votre aide.
A voir également:
- Awk : tri de fichier et recuperation de ligne
- Awk dédoublonner un print ✓ - Forum Shell
- Suppression de lignes en awk ✓ - Forum Shell
- Awk : tri selon la date ✓ - Forum Shell
- SED ou Awk sous windows ?? - Forum Windows
- Awk : remplacement d'un élément conditionnel - Forum Shell
4 réponses
Salut,
Si j'ai bien compris, tu veux les 10 val supérieurs pour le client1 et pour le client 2, ... ?
Si j'ai bien compris, tu veux les 10 val supérieurs pour le client1 et pour le client 2, ... ?
flora806
oui tout à fait, je veux récupérer les 10 val supérieures pour chaque client.
Sauf si mon shell est trop rouillé, si tu fais un head -n 10 , tu ne pourras avoir que 10 résultats à l'écran donc comment espères-tu avoir 10 * nb clients lignes en sortie ?
Soit découpes ton fichier en autant de client soit il va falloir faire un script un peu plus compliqué à mon avis.
Soit découpes ton fichier en autant de client soit il va falloir faire un script un peu plus compliqué à mon avis.
En fait, tu essayes de faire ce que les bases de données font. La solution ne sera pas si facile et je ne sais pas si un enchainement de commandes de type shell va pouvoir résoudre ton problème.
Ton raisonnement est bon pour un client. Il faudrait que tu découpes ton fichier client par client puis que tu utilises ta commande sur chaque fichier.
Il y a certainement d'autres solutions, mais c'est tout ce que j'ai tout de suite là
Ton raisonnement est bon pour un client. Il faudrait que tu découpes ton fichier client par client puis que tu utilises ta commande sur chaque fichier.
Il y a certainement d'autres solutions, mais c'est tout ce que j'ai tout de suite là