Suppression de lignes en awk

Résolu
Clément -  
 Clément -
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. Utilisateur anonyme
     
    salut,

    awk '!a[$1]{a[$1]++;print}' fichier
    1
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  3. Clément
     
    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