2013-09-27 98 views
4

我有一個龐大的數據文件以表格格式進行分析。主要有兩列是我感興趣的,其中一列包含字母數字字母的名稱(第1列),另一列包含百分比數字(第3列)。基於特定列的排序,閾值和顯示錶數據

我的要求是根據列#3的值對數據進行反向排序,應用某個閾值(> 10.0),並且按排序順序顯示符合此條件的所需行,並且列#1和列#3。

通常我會寫一個小的perl腳本來達到這樣的要求。但是在這裏我正在尋找一系列linux命令(一個班輪)來快速有效地解決它。

採樣輸入

abc12 24.5  90.0 5 
xyz23 454.23 23.5 2 
aa34cd 1.345 12.34 6 
uvxy 4.25  54.7 1 
pqr3t 235.3 6.05 4 
abcd 1.234 4.56 3 

所需的輸出

abc12 90.0 
uvxy 54.7 
xyz23 23.5 
aa34cd 12.34 

這將是明顯的,如果你能幫助我解決這個問題。

我試過了什麼?

我可以使用以下命令在第3列上進行反向排序。不知道下一步是什麼!

awk '{print $3}' test.txt | sort -rn 

回答

5

只打印第一和第三場,如果第三個是大於10,然後做一個數字相反的順序排序在第二場:

$ awk '$3>10{print $1,$3}' file | sort -nrk 2 
abc12 90.0 
uvxy  54.7 
xyz23 23.5 
aa34cd 12.34 
+1

這正是我需要的。非常感謝! – jkshah