我有一个如下所示的文件:
Pallets
24 1 345 232 345 1 432 45 0 3
some text
more text
COPIES
542 11,456 1,576 1,212 13,229 46,035 9,061 10,642 13,044
CHARGES
225.45 4,464.90 613.91 511.73 5,140.22 17,532.10 3,473.52 4,059.68 5,064.39
是否可以对数字列表的每一行进行排序?
所以像(我想象的):
如果匹配模式/^\d+/则对该行进行排序。
这可能吗?
编辑。这是输出。
Pallets
0 1 1 232 24 3 345 345 432 45
some text
more text
COPIES
542 1,212 1,576 9,061 10,642 11,456 13,044 13,229 46,035
CHARGES
225.45 511.73 613.91 3,473.52 4,059.68 4,464.90 5,064.39 5,140.22 17,532.10
编辑。这是我到目前为止得到的内容(忽略逗号和小数部分)
%s/\n\(\d.*\)\n/\rSTART\r\1\rEND\r/
g/^\d/ s/ /\r/g
#Throwing away decimal for now..
g/^\d/ s/,\|\.\d\+//
g/START/+,/END/- sort
g/START/+,/END/- s/\n/ /
%s/ END$//
g/^START/d
最佳答案
您可以先将记录分成单独的行,对它们进行排序,然后重新连接:
:s/ /\r/g
:'[,']sort
:'[,']join
如果不使用空格作为分隔符,则必须使用:s
重新连接:
:'[,']s/\n/,/
'[,']
可以轻松地选择修改的范围(从行的初始分割开始),因此您不需要使用行号或人为地引入 BEGIN..END 防护.
关于regex - Vim - 对文件中的每一行数字进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870715/