Sed : supprimer des lignes identiques [Résolu/Fermé]

Messages postés
10
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
30 avril 2015
- - Dernière réponse : Bulot56
Messages postés
10
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
30 avril 2015
- 31 juil. 2013 à 09:28
Bonjour,

Je cherche à supprimer des lignes commençant par les 3 mêmes mots. Je voudrais garder juste la dernière.

Par exemple :
tata titi toto nimportekoi
tata titi toto autrechose

Devient :
tata titi toto autrechose

J'imagine que sed est mon ami mais là ça me dépasse !

Merci.


Afficher la suite 

3 réponses

Messages postés
17855
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
15 octobre 2019
4474
0
Merci
hello
awk est notre ami
$ awk '{t[$1, $2, $3]=$0} END {for(n in t)print t[n]}' fichier
tata titi toto autrechose
$ 
Messages postés
37210
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
15 octobre 2019
4095
0
Merci
Salut,

Et pourquoi pas avec les outils faits pour, comme sort par exemple ?

$ cat brol
tata titi toto nimportekoi
tata titi toto autrechose 

$ sort brol | sort -u -t ' ' -k1,1 -k2,2 -k3,3
tata titi toto autrechose 

zipe31
Messages postés
37210
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
15 octobre 2019
4095 -
Si tu tiens à le faire avec "sed", voilà un exemple :

sed 'N;s/^\([^ ]*\)\([^ ]*\)\([^ ]*\).*\n\1\2\3\(.*\)/\1\2\3\4/' brol

Mais bon, "awk" est largement plus adapté ;-)
Messages postés
10
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
30 avril 2015
0
Merci
Merci beaucoup !

Version awk adoptée (non sed je n'y tiens pas plus que ça ...)!