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.



A voir également:

3 réponses

Utilisateur anonyme
 
salut,

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