Car*_*ala 10 regex sorting vim
我知道,在vim中,我可以使用正则表达式对文件进行排序,以指示在使用以下方法排序时我想要使用的每行的哪些部分:
:sort 'regex' r
Run Code Online (Sandbox Code Playgroud)
是否可以组合多个表达式?
这里有一个例子:
INPUT:
bar a 2
foo b 1
bar b 1
foo a 2
Run Code Online (Sandbox Code Playgroud)
:sort'[az]'r
foo b 1
bar b 1
bar a 2
foo a 2
Run Code Online (Sandbox Code Playgroud)
排序'[0-9]'r
bar a 2
bar b 1
foo b 1
foo a 2
Run Code Online (Sandbox Code Playgroud)
预期(也许是"喜欢":排序'[AZ] | [0-9]'r?):
bar b 1
bar a 2
foo b 1
foo a 2
Run Code Online (Sandbox Code Playgroud)
请注意,由于那些"a"和"b"打破了数字顺序,所以裸"排序"不起作用
bar a 2
bar b 1
foo a 2
foo b 1
Run Code Online (Sandbox Code Playgroud)
VIM之外的另一种选择也被接受了,但是,为了好奇,我想知道它是否真的可以在VIM中进行(如果是更好的,如何;-)
非常感谢,问候
假设您有外部排序可用,以下应该有效:
:%!sort -k1,1 -k3,3n
Run Code Online (Sandbox Code Playgroud)
编辑:说明:
-k
用于指定排序键. -k1,1
暗示开始排序key1
并结束它key1
. -k3,3n
暗示开始排序key3
并结束它key3
; n
这里表示数字排序,即根据字符串数值进行比较.
默认情况下,sort将空白转换为非空白转换作为字段分隔符.因此,它认为该行bar b 1
包括三个字段.如果值由空格以外的特定字符分隔,例如:
,您可以通过添加来指定字段分隔符-t:
.