[Unix] tri de fichier - special
Résolu
Plopiplop
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis sur un shell unix et je dois faire un tri sur un fichier contenant les id et l'ip des utilisateurs.
je m'adresse à vous pour savoir comment il serait possible de trier un fichier qui se compose comme ceci
23455 192.168.0.15
23456 192.168.0.1
23456 192.168.0.2
pour faire en sorte que ca donne ceci :
23455 192.168.0.15
23456 192.168.0.1 192.168.0.2
en gros le tri se ferait sur la première chaine de charactère les informations suivantes seraient ainsi mise à la suite de l'occurence restante.
je me suis tourné vers les fonctions sort et uniqmais je connais peu les paramètres et n'obtiens pas le resultat voulu.
si je trouve une solution je la poste dès que c'est validé
Merci d'avance
je suis sur un shell unix et je dois faire un tri sur un fichier contenant les id et l'ip des utilisateurs.
je m'adresse à vous pour savoir comment il serait possible de trier un fichier qui se compose comme ceci
23455 192.168.0.15
23456 192.168.0.1
23456 192.168.0.2
pour faire en sorte que ca donne ceci :
23455 192.168.0.15
23456 192.168.0.1 192.168.0.2
en gros le tri se ferait sur la première chaine de charactère les informations suivantes seraient ainsi mise à la suite de l'occurence restante.
je me suis tourné vers les fonctions sort et uniqmais je connais peu les paramètres et n'obtiens pas le resultat voulu.
si je trouve une solution je la poste dès que c'est validé
Merci d'avance
A voir également:
- [Unix] tri de fichier - special
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
8 réponses
hello
$ cat a2 23455 192.168.0.15 23456 192.168.0.1 23456 192.168.0.2 $ $ sort -n -k 1,2 a2 | awk '{x[$1]=x[$1] " " $2} ; END{for(n in x)print n, x[n]}' 23455 192.168.0.15 23456 192.168.0.1 192.168.0.2 $
voila
{x[$1]=x[$1] " " $2} pour chaque ligne, on stocke dans un tableau x indexé par le champ 1 l'adresse IP, que l'on ajoute aux précédentes END{for(n in x)print n, x[n]} à la fin, on imprime le tableau, n étant la valeur de début de ligne, x[n] les adresses IP pour une même valeur de début de ligne
Merci beaucoup ca marche niquel,
par conte si je pouvais avoir une explication a partir du awk ca serait vraiment top... ca me permettrait de me mettre en tête un peu mieux cette utilisation de cette fonction.
par conte si je pouvais avoir une explication a partir du awk ca serait vraiment top... ca me permettrait de me mettre en tête un peu mieux cette utilisation de cette fonction.
Bonjour, je suis nouveau sur ce site et novice en Unix.
comment faire si les fichiers n'avaient pas de sépérateur (dans le cas ou pas de blanc)?
23455192.168.0.15
23456192.168.0.1 192.168.0.2
Merci d'avance.
comment faire si les fichiers n'avaient pas de sépérateur (dans le cas ou pas de blanc)?
23455192.168.0.15
23456192.168.0.1 192.168.0.2
Merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
par ex. insérer un espace
$ cat a1 23455192.168.0.15 23456192.168.0.1 192.168.0.2 $ $ sed 's/^...../& /' a1 23455 192.168.0.15 23456 192.168.0.1 192.168.0.2 $ou
$ gawk 'BEGIN{FIELDWIDTHS="5 32"} {print $1, $2}' a1 23455 192.168.0.15 23456 192.168.0.1 192.168.0.2 $