如何从第5列开始对以下文本进行排序:
123456789
000 123
013 122
122 013
123 000
Run Code Online (Sandbox Code Playgroud)
我想得到这个:
123 000
122 013
013 122
000 123
123456789
Run Code Online (Sandbox Code Playgroud)
以下vim命令帮助了我:
:sort /\%5v/
Run Code Online (Sandbox Code Playgroud)
除了一些简单的选项(如你,我,!,n),sort可以接收正则表达式/ {pattern} /.在这种情况下,有两种选择:
default - 未指定[r]标志 - 在这种情况下,对于每一行,跳过与{pattern}匹配的文本,因此 对匹配后的内容进行排序.
文档中的示例:
A1.示例 - 从虚拟列5开始排序 我们的情况 - 对虚拟列5处的文本进行排序(从而忽略制表符和空格之间的差异):
Run Code Online (Sandbox Code Playgroud):sort /.*\%5v/
A2.示例 - 对第二个逗号分隔字段进行排序
逻辑是:跳过文本直到找到第一个逗号:
Run Code Online (Sandbox Code Playgroud):sort /[^,]*,/
即排序是在匹配的{pattern}上完成的,而不是如上所述跳过它...只排序每行的前三个字母:
:sort /\a\a\a/ r
Run Code Online (Sandbox Code Playgroud)
请检查:help:排序以获取更多详细信息/选项