【发布时间】:2015-04-17 01:20:11
【问题描述】:
我有一个如下所示的 csv:
user, score
bob, 10
alice, 12
peter, 20
bruce, 32
...
文件很大,我想获取得分最高的前 50 名用户。
我怎样才能用一个简单的 shell 命令来做到这一点?
【问题讨论】:
我有一个如下所示的 csv:
user, score
bob, 10
alice, 12
peter, 20
bruce, 32
...
文件很大,我想获取得分最高的前 50 名用户。
我怎样才能用一个简单的 shell 命令来做到这一点?
【问题讨论】:
你可能想说:
sort -t',' -k2 -nr file
对于给定的输入,它会返回:
bruce, 32
peter, 20
alice, 12
bob, 10
user, score
这使用带有这些参数的sort:
-t',' 将字段分隔符设置为逗号。-k2 表示sort 必须与第二列一起使用。-nr 表示您要按数字排序并在 reverse 中(第一个最高)。要获取前 50 行,您可以通过管道传递到 head -50,这将获取上一个命令输出的前 50 行:
sort -t',' -k2 -nr file | head -50
【讨论】: