2010-11-11 8 views
2

J'ai un tas de fichiers texte avec le contenu suivant dans les colonnes 1 et 2 (séparés par un espace):Besoin d'aide pour utiliser AWK/sort/uniq pour supprimer des lignes ayant des valeurs identiques dans la première colonne d'un simple fichier texte

Address0 Data0

address1 data1

.

.

.

addressN datan

Toutes les valeurs de données sont uniques (aléatoire), mais certaines valeurs d'adresses sont répétées. Comment utiliser AWK/sort/uniq pour supprimer les lignes dont les adresses sont déjà spécifiées?

Fondamentalement, il ne devrait pas y avoir d'adresses dupliquées dans le fichier texte, quelles que soient les données associées.

Répondre

0

sort -k1 your_file | awk '{ if ($1 != last_address_seen) {print $0; last_address_seen=$1}}'

+0

il finit par sortir 0 lignes. :-( – Arjun

+0

cela a effectivement fonctionné quand j'ai utilisé gawk, je pense que c'était un problème cygwin, merci beaucoup – Arjun

1
awk ' 
    $1 in seen {next} 
    {print; seen[$1] = 1} 
' file ... 
+0

Cela a l'avantage de conserver l'ordre d'origine des lignes dans le fichier. –

0
sort -k1 -u your_file > outputfile 

La plupart des commandes de tri unix soutiendra l'option -u qui ne conservera que la première des deux lignes qui comparent toutes les clés sur l'égalité.