在 shell 中对 csv 进行排序并仅保留最高值

Sort a csv in shell and keep only the top values

我有一个这样的 csv:

user, score
bob, 10
alice, 12
peter, 20
bruce, 32
...

文件比较大,想获取得分最高的前50名用户

如何使用简单的 shell 命令执行此操作?

你可能想说:

sort -t',' -k2 -nr file

对于你给定的输入 returns:

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