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

Signaler
Messages postés
10
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
30 avril 2015
-
Messages postés
10
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
30 avril 2015
-
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.


3 réponses

Messages postés
18226
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
11 octobre 2020
5 028
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
35682
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 octobre 2020
5 532
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 

Messages postés
35682
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
13 octobre 2020
5 532
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

Merci beaucoup !

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