2016-01-22 47 views
0

我有一個包含3個字段的文件。根據最高到最低排序Linux文件中的字段

字段1有名稱,字段2和字段3有數字值。我需要根據其中存在的最高值對所有字段進行排序。

FILE1.TXT

ASANSOL 16.76 31.991 
ASANSOL 16.72 33.687 
ASANSOL 16.48 25.344 
ASANSOL 16.74 30.777 
BANGALORE 13.39 17.243 
BANGALORE 14.34 20.852 
BANGALORE 15.58 25.112 
BANGALORE 14.59 34.752 
BANGALORE 17.93 2.792 
BHOPAL 16.53 13.487 
BHOPAL 16.7 11.599 
BHOPAL 16.65 16.003 
BHOPAL 16.87 20.674 

排序,並採取獨特的價值觀後,所得到的輸出應該如下產生:

ASANSOL  16.76 33.687 
BANGALORE 17.93 34.752 
BHOPAL  16.87 20.674 

幫助我,我要怎麼去呢? #Script將是可取的

回答

1

對不起,我做的第一個沒有問一個答案。正確的答案是簡單的:

awk '{ d1[$1] = $2; d2[$1] = $3 } END { for(x in d1) print x, d1[x], d2[x] }' <filename> 

-----------老答案-----------------

答案很簡單: :

cat <filename> | awk '{ if($2>$3) { max = $2 } else { max = $3 } print max, $0 }' | sort -r | sed 's/^[0-9.]* //' 
  1. 發現數量最多用awk,它前面加上每線;
  2. sort;
  3. 使用sed刪除第一列
+0

準確地說,我不比較字段2和3.它類似於: 我需要Asansol的第二個字段的最高值,它是16.76 和第三個字段相同,我需要第三個字段的最高值爲Asansol,這是33.687。 - 一起它應該打印一行Asanasol:ASANSOL 16.76 33.687 –

+0

對不起,我錯了 – Yang

相關問題