如何根据vim中特定字符的数量进行排序?

时间:2014-09-17 02:38:10

标签: sorting vim

我有一个文件,其中某些行标记,其中包含多个相对重要的管道。 你会如何根据重要性和字母顺序在vim中对这些行进行排序?

输入

cli
bar ||
bar
foo |||
haz ||

输出

foo |||
bar ||
haz ||
bar
cli

请注意, bar haz 按管道数排序,但也按字母顺序排序。 谢谢!

2 个答案:

答案 0 :(得分:4)

使用vim内置:sort,您可以执行以下操作:

:sort! r /|*$/ 

如果您想按重要性和字母排序,您可以:

:sort|sort! r/|*$/

注意您的输出并未遵循您所描述的规则。

答案 1 :(得分:1)

如果您可以访问外部linux sort命令,则可以在vim中运行:

:%!sort -k2r -k1,1

这会以相反的顺序对第二列进行排序,如果第二列中有重复项,则按第一列按升序排序。