2017-04-12 37 views
0

我有以下數據如何根據價值對重複條目進行整理?

36 1 Exp/FXR_36-A  8.11235215439 
36 1 Exp/FXR_36-C  8.21811660743 
36 2 Exp/FXR_36-A  1.25092447969 
36 2 Exp/FXR_36-C  1.30241737955 
36 3 Exp/FXR_36-A  7.01407049989 
36 3 Exp/FXR_36-C  7.01082158701 
36 4 Exp/FXR_36-A  8.51079567125 
36 4 Exp/FXR_36-C  8.49081312769 
36 5 Exp/FXR_36-A  6.87734616389 
36 5 Exp/FXR_36-C  6.88288703699 

慾望的結果應該是

36 1 Exp/FXR_36-A  8.11235215439 
36 2 Exp/FXR_36-A  1.25092447969 
36 3 Exp/FXR_36-C  7.01082158701 
36 4 Exp/FXR_36-C  8.49081312769 
36 5 Exp/FXR_36-A  6.87734616389 

你可以看到,有重複的條目,但我想保持與最低值的條目列4,並打印出具有正確條目的新文件。

我想是這樣,但輸出是不是我想要的

sort -k2 -k4 tmp.txt | awk '!x[$4]++' 
sort -k4 tmp.txt | awk '!x[$4]++' 

任何幫助將得到高度讚賞。

謝謝。

+0

你爲自己嘗試了什麼? – Inian

+0

使用Python-Pandas是一種選擇。 – Evert

+0

和第4列在您提供的輸入中沒有重複 – Inian

回答

0

您可以使用sort/awk組合來實現這一點,sort排序在最後一列和awk篩選出基於列的1和2的重複,

sort -k4 file | awk '!unique[$1FS$2]++' 
36 2 Exp/FXR_36-A  1.25092447969 
36 5 Exp/FXR_36-A  6.87734616389 
36 3 Exp/FXR_36-C  7.01082158701 
36 1 Exp/FXR_36-A  8.11235215439 
36 4 Exp/FXR_36-C  8.49081312769 

,如果你擔心順序sort基於第二列再次輸出,

sort -k4 file | awk '!unique[$1FS$2]++' | sort -k2 
36 1 Exp/FXR_36-A  8.11235215439 
36 2 Exp/FXR_36-A  1.25092447969 
36 3 Exp/FXR_36-C  7.01082158701 
36 4 Exp/FXR_36-C  8.49081312769 
36 5 Exp/FXR_36-A  6.87734616389 
相關問題