Suppression de lignes en awk

Résolu
Bonjour,

j'ai un fichier qui ressemble un peu à ça:
1.5 0.30
1.5 0.34
1.8 0.40
1.8 0.41
2.0 0.37
2.0 0.38
et je voudrais supprimer les lignes où le champ $1 est identique à celui de la précédente pour que mon fichier devienne:
1.5 0.30
1.8 0.40
2.0 0.37
J'ai essayé ce script:
awk '{  v = 0 ;
       	for (i=1; i<=NR; i++)
	{k = $1;
	if ($1==v)
		{print $0;}
	v = k;}
      }' fichierdépart > fichierdestination


mais malheureusement il ne fonctionne pas,
si vous avez des suggestions pour modifier le script où m'en proposer un nouveau je suis preneur!

Merci d'avance,
Clément.

3 réponses

  1. salut,

    awk '!a[$1]{a[$1]++;print}' fichier
    1
    1. Contributeur
      Salut,

      Avec sed ?

      $ cat plop  
      1.5 0.30 
      1.5 0.34 
      1.8 0.40 
      1.8 0.41 
      2.0 0.37 
      2.0 0.38 
      
      $ sed -r 'N;/([^ ]*) .*\n\1.*/{P;d}' plop  
      1.5 0.30 
      1.8 0.40 
      2.0 0.37 
      
      $

      ;-))

      Zen my nuggets ;-)
      Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.
      0
      1. Bonjour,

        la solution de qqchquicommenceparQ marche parfaitement.
        Par contre pour le sed, il fonctionne sur l'exemple que j'ai donné mais en réalité mon fichier est plus compliqué et il y a parfois des répétitions plus longues (>2), et je pense que c'est pour ça qu'il ne fonctionne pas. C'est ma faute j'aurais pas du simplifier le fichier..

        En tous cas merci à vous deux pour les réponses!
        0