2013-09-27 72 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