Awk : tri de fichier et recuperation de ligne
flora806
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
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.
Configuration: Windows XP Firefox 2.0.0.12
A voir également:
- Awk : tri de fichier et recuperation de ligne
- [Awk] appel variable système dans script awk - Forum Shell
- Awk dédoublonner un print ✓ - Forum Shell
- Awk compréhension d'une commande ✓ - Forum Debian
- Printf caractère % dans awk ✓ - Forum Shell
- Suppression de lignes en awk ✓ - 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.
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à