Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/04/2009, à 13:37

J-dub

Dedoublonner un fichier en fonction de certaines colonnes

Bonjour,

Je cherche une commande permettant de dédoublonner des lignes d’un fichier en fonction de certaines colonnes, j'ai cherché dans le man uniq mais je ne pense pas que c'est possible. Il faudrait que je commence à apprendre awk...

Par exemple pour ce fichier :

nom_projet1|nom_job1|nom_lien1|46523|nom_col1|1|2|lien_entree1

nom_projet1|nom_job1|nom_lien2|46524|nom_col2|1|2|lien_entree2

nom_projet1|nom_job1|nom_lien2|46524|nom_col2|2|8|lien_entree2

nom_projet1|nom_job1|nom_lien3|46525|nom_col3|1|2|lien_entree3

Je souhaiterai dédoublonner en fonction des 4 premières colonnes sans tenir compte du reste, en faite même juste en tenant compte de la 4ème colonne (id) cela devrait fonctionner, je souhaiterai prendre uniquement la 1ère ligne trouvée en cas de doublon sur la 4ème colonne, avec cette exemple je souhaiterai obtenir :

nom_projet1|nom_job1|nom_lien1|46523|nom_col1|1|2|lien_entree1

nom_projet1|nom_job1|nom_lien2|46524|nom_col2|1|2|lien_entree2

nom_projet1|nom_job1|nom_lien3|46525|nom_col3|1|2|lien_entree3

Une idée de comment faire?

#2 Le 17/04/2009, à 14:14

Alain.g

Re : Dedoublonner un fichier en fonction de certaines colonnes

Tu n'as apparemment pas lu ma réponse à un autre de tes sujets :
http://forum.ubuntu-fr.org/viewtopic.php?pid=2563794#p2563794

Car c'est la même solution...

awk -F'|' '!a[$4]++' fichier

Si tu ne la comprends pas, regarde le numéro 43 sur cette page :
http://www.catonmat.net/blog/awk-one-liners-explained-part-two/

Dernière modification par Alain.g (Le 17/04/2009, à 14:15)


Xubuntu Karmic !

Hors ligne

#3 Le 17/04/2009, à 14:20

Totor

Re : Dedoublonner un fichier en fonction de certaines colonnes

Bonjour,

en tenant compte des 4ères colonnes :

cut -d'|' -f1-4 <nomFichier>' | xargs -l1 -I{} grep -m1 "^{}" <nomFichier >

En tenant compte que de la 4ème colonne :

cut -d'|' -f4 <nomFichier>|uniq|xargs -l1 -i{} grep -m1 '^\([^|]\+|\)\{3\}{}|' <nomFichier>

EDIT : Alain a posté entre temps (qui est toute simple une fois comprise !)... désolé

Dernière modification par Totor (Le 17/04/2009, à 14:24)


-- Lucid Lynx --

Hors ligne

#4 Le 17/04/2009, à 18:35

J-dub

Re : Dedoublonner un fichier en fonction de certaines colonnes

Merci à vous deux ça fonctionne très bien!
Merci pour le lien Alain et pour ta réponse sur mon autre post que je n'avais pas vu effectivement.