[Shell-script] suppresion lignes identiques

Fermé
Phil - 27 avril 2007 à 11:58
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 27 avril 2007 à 22:44
Bonjour à tous.

J'ai un fichier du type :
   Date         Time       lat      Lon     Pha  Dist   Sta        
2004/01/01   01:06:56.0  71.1426 -14.6447    P   2.50   SCO	   
2004/01/01   01:08:48.1  71.1426 -14.6447    P  10.25   KBS	  
2004/01/01   01:08:54.8  71.1426 -14.6447    P  10.64  SPB4	 
2004/01/01   01:44:17.0  38.3826  21.6384    P   1.96   VLI	  
2004/01/01   01:44:21.3  38.3826  21.6384    S   1.10   LKR	   
2004/01/01   02:32:33.1  11.7330  43.4560    P   2.28  UDYN	
2004/01/01   02:32:41.6  11.7330  43.4560    P   2.95  DHBB	
  

Comme vous pouvez le voir il y a des lignes dont les colonnes 'lat' et 'lon' sont identique. Je cherche à trier mon fichier pour faire en sorte de ne garder qu'une ligne par couple de 'lat' et 'lon'.
Pour cet exemple cela donnerais :
   Date         Time       lat      Lon     Pha  Dist   Sta        
2004/01/01   01:06:56.0  71.1426 -14.6447    P   2.50   SCO	    
2004/01/01   01:44:17.0  38.3826  21.6384    P   1.96   VLI	     
2004/01/01   02:32:33.1  11.7330  43.4560    P   2.28  UDYN	

Je précise que le but du script est de supprimer les lignes superflues, l'important étant de garder un couple de 'lat' et 'lon'.
Je crois que la commande 'sort -u' permet de faire ce genre d'opération mais je ne sais pas comment lui indiquer quelle colonnes regarder.

Any ideas ???

Merçi d'avance :)
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 avril 2007 à 16:24
Salut,
sort -r +2 fichier | uniq -f 3 -w 7
;-))
2
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
27 avril 2007 à 22:44
Trop fort :-))
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
27 avril 2007 à 12:35
Ben perso je ferais 2 boucles imbriquées :

while read ligne

A l'intérieur de cette boucle je passerais dans un tableau la concaténation des 2 colonnes 'lat' et 'lon';
A chaque lecture de ligne, vérifier si le résultat existe dans ton tableau (en bouclant dessus).
Si non, j'ajoute la concaténation au tableau et je mémorise la ligne (ou l'envoie dans un fichier de sortie).

done < mon_fichier

Mais bon y'a surement plus propre ;-)
0