2014-04-30 5 views
0

Un fichier comportant 3 colonnes séparées par une tabulation. Je veux sélectionner la valeur la plus élevée de la colonne 3 (parmi le même nom de la colonne 1er) et imprimer comme la 4ème colonne.
Sélection de la valeur la plus élevée dans un tableau

fichier d'entrée

A  l  10 
A  l  2 
A  m  6 
B  l  12 
B  m  13 
B  n  7 
C  l  9 
C  l  8 
C  n  19 

fichier de sortie

A  l  10  10 
A  l  2  10 
A  m  6  10 
B  l  12  13 
B  m  13  13 
B  n  7  13 
C  l  9  19 
C  l  8  19 
C  n  19  19 

Pourriez-vous s'il vous plaît suggérer awk ou sed commande. Merci

+1

Ces chiffres sont-ils toujours positifs? – Ashkan

+0

Excellente, perspicace, solution-impacting question de @Ashkan! –

Répondre

1

Vous pouvez utiliser cette awk

awk 'FNR==NR {arr[$1]=arr[$1]>$3?arr[$1]:$3;next} {print $0,arr[$1]}' OFS="\t" file{,} 
A  l  10  10 
A  l  2  10 
A  m  6  10 
B  l  12  13 
B  m  13  13 
B  n  7  13 
C  l  9  19 
C  l  8  19 
C  n  19  19 

Ce passe deux fois sur la file. Première fois à trouver le plus haut, à côté de l'impression.
Les file{,} doublent le nom de fichier. Vous pouvez également utiliser file file à la place.

+0

Merci. Ça fonctionne. – firoz

Questions connexes