我的问题很像这个问题,但有一个不同;我想要输出在第三个选项卡上得分最高的行。我的数据是这样的:
1.gui Qxx 16
2.gui Qxy 23
3.guT QWS 11
我想得到这个:
1.gui Qxy 23
3.guT QWS 11
我用了:
cat file.f | uniq | cut -d" " -f3 | sort | uniq -d >>out.f
但没有得到我想要的!?
与sort
:
$ sort -rk3 file # Sort on column 3, display all results
2.gui Qxy 23
1.gui Qxx 16
3.guT QWS 11
$ sort -rk3 file | head -2 # Sort on column 3, filter number of results
2.gui Qxy 23
1.gui Qxx 16
$ sort -rk3 file | uniq # Sort on column 3, on display unique results
2.gui Qxy 23
1.gui Qxx 16
3.guT QWS 11
-r
反向排序,最高优先。
-k3
在第三列排序。
如果您只想显示第 3 列大于某个值(即 15)的行,请尝试使用awk
:
awk '$3>15' file | sort -rk3 # Display line where column 3 > 15 and sort
2.gui Qxy 23
1.gui Qxx 16
对于有相同问题的未来用户:
不要忘记在-sort
命令中引入 -n 开关,或者您的值从 9999 开始排序,然后是 999 等。所以使用
sort -rnk3 file
如果您只想获得具有最高值的一行(删除重复项),请使用以下命令:
sort -rnk3 file | awk '!x[$2]++'
如果你有一个常用的分隔符,你可以告诉-awk
注意:
sort -rnk3 file | awk -F"[. ]" '!x[$2]++'
这必须为重复名称的那些行提供最高值,并保留那些没有重复名称的行。
sort -rk3 file | awk '!seen[$1]++' > file_filtered.txt