普通命令:sort可以基于列或虚拟列(\%c\%v)对行进行排序,能否将更高级别的逻辑列用作排序键?在这种情况下,使用正则表达式看起来有点复杂(该列在行尾吗?),它看起来与sort实用程序(sork -k)相似,但是在Windows上无法使用此功能进行排序。 Vim插件也有帮助。

例如,我想根据最后一列(用逗号分隔)对下面的2行进行排序。我的实际情况有更多的列和字符串模式。指定列定界符将大大简化它。

xxx,yyy,zzz,0x123
zzxz,xxxx,yyyy,0x121


#1 楼

Vim的排序使您可以跳过{pattern}或仅考虑它(带有r标志)。最后一个逗号分隔的列的正则表达式很容易表达:跳过所有内容,直到一行中的最后一个逗号为止:
将使用r标志,并通过2跳过前几列N(此处:\zs):

:sort/.*,/


评论


由于最后一列恰好是十六进制数字,因此使用x标志也可能会有所帮助。

–jecxjo
15年5月22日在19:22

这看起来很棒。最后一列可能是特例。中间列有任何简单表示吗?

–汤姆森
2015年5月23日,3:15

我以为您能够为此提出一些建议,但是您来了。请单击旁边的勾号,接受我的(已编辑)答案。谢谢!

– Ingo Karkat
15年5月23日在9:56