我刚刚在 vim 中发现了命令 :sort n
(我怎么不知道?!),它几乎完全满足了我的需要。
不过,我想要排序的是一长串 IP 地址(它是一个“允许主机”文件,可以包含
到我们的 apache 配置中),这对于:sort n
能够识别 123.45.6.7
应排序在 123.45.16.7
之前(例如)。
这是一个安全的假设,我应该减少对此的强制症并且不用担心,因为如果没有稍微复杂的 sed
或 awk,我将无法做到这一点
命令什么的?
需要明确的是,所有行看起来都类似于:
Allow from 1.2.3.4
Allow from 5.6.7.8
Allow from 9.10.11.12
等等
最佳答案
Vim 排序在实践中似乎是稳定的(但不能保证)。因此你可以尝试:
:%sort n /.*\./
:%sort n /\.\d\+\./
:%sort n /\./
:%sort n
它将按最后一个点后面的数字排序(*
是贪婪的),然后按点和数字后面的第一个点后面的数字排序,然后按第一个点后面的数字排序,最后按第一个数字。
关于在vim中对IP地址进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9067559/