Sed : supprimer des lignes identiques

Résolu/Fermé
Bulot56 Messages postés 10 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 30 avril 2015 - 17 juil. 2013 à 11:10
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.


3 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
17 juil. 2013 à 13:57
hello
awk est notre ami
$ awk '{t[$1, $2, $3]=$0} END {for(n in t)print t[n]}' fichier
tata titi toto autrechose
$ 
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
17 juil. 2013 à 14:01
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 

0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
17 juil. 2013 à 14:06
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é ;-)
0
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
Merci beaucoup !

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