如何按大小对Vim中的文本列进行排序?

时间:2014-03-12 16:25:06

标签: sorting vim

鉴于此文本

affiliates                  1038    680     KB
article_ratings             699     168     KB
authors                     30      40      KB
fs.chunks                   3401    633.89  MB
fs.files                    1476    680     KB
nodes                       1432    24.29   MB
nodes_search                91      2.8     MB
nodes_tags                  272     40      KB
page_views                  107769  16.37   MB
page_views_map              212     40      KB
recommendations             34305   45.1    MB
rewrite_rules               209     168     KB
sign_ups                    10331   12.52   MB
sitemaps                    1       14.84   MB
suppliers                   13      8       KB
tariff_price_check_reports  34      540     KB
tariff_price_checks         1129    968     KB
tariffs                     5       680     KB
users                       17      64      KB
users_tags                  2       8       KB
versions                    18031   156.64  MB

如何按第4列和第3列排序,以便按文件大小排序?

我已尝试:%!sort -k4 -k3n部分有效,但似乎在第3个尺寸列上失败。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我想我已经明白了。

:%!sort -k4 -bk3g

我按第4列(-k4)排序,然后是第3列。我们忽略前导空格(b),这次我们使用通用数字排序(g)排序。

I blogged about this too

答案 1 :(得分:0)

我不知道如何使用sort()处理它。我发现小数点有问题,虽然我更改了LC_NUMERIC环境变量,所以我会切换到来解决它,如:

:%!perl -0777 -ne '
    @l = map { [ $_, split " ", $_ ] } split /\n/, $_; 
    @l = sort { $a->[-1] cmp $b->[-1] or $a->[-2] <=> $b->[-2] } @l; 
    print "$_->[0]\n" for @l
'

如果来自内,请将其放在同一行中。它产生:

suppliers                   13      8       KB
users_tags                  2       8       KB
authors                     30      40      KB
nodes_tags                  272     40      KB
page_views_map              212     40      KB
users                       17      64      KB
article_ratings             699     168     KB
rewrite_rules               209     168     KB
tariff_price_check_reports  34      540     KB
affiliates                  1038    680     KB
fs.files                    1476    680     KB
tariffs                     5       680     KB
tariff_price_checks         1129    968     KB
nodes_search                91      2.8     MB
sign_ups                    10331   12.52   MB
sitemaps                    1       14.84   MB
page_views                  107769  16.37   MB
nodes                       1432    24.29   MB
recommendations             34305   45.1    MB
versions                    18031   156.64  MB
fs.chunks                   3401    633.89  MB