【问题标题】:Sort a csv in shell and keep only the top values在 shell 中对 csv 进行排序并仅保留最高值
【发布时间】:2015-04-17 01:20:11
【问题描述】:

我有一个如下所示的 csv:

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

文件很大,我想获取得分最高的前 50 名用户。

我怎样才能用一个简单的 shell 命令来做到这一点?

【问题讨论】:

    标签: bash shell sorting csv


    【解决方案1】:

    你可能想说:

    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
    

    【讨论】:

      猜你喜欢
      • 2022-01-27
      • 2019-01-02
      • 2013-03-23
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多