4 个版本
0.1.3 | 2023年11月4日 |
---|---|
0.1.2 | 2023年6月4日 |
0.1.1 | 2023年5月20日 |
0.1.0 | 2023年5月20日 |
#497 in 网络编程
76KB
2K SLoC
这是什么?
Omegasort 是一个文本文件排序工具,旨在成为你需要的最后一个排序工具。
我写这个工具是因为我喜欢将各种类型的文件按顺序排列(如 .gitignore 文件、拼写停用词列表等),并且我希望有一个可以作为我的提交钩子和 CI(使用 precious)调用的工具。
安装
有几种安装此工具的方法。
使用 ubi
安装我的 通用二进制安装程序(ubi) 工具,您可以使用它下载 omegasort
和许多其他工具。
$> ubi --project houseabsolute/omegasort --in ~/bin
二进制发布
您可以从 发布页面 下载二进制发布版本。解压缩 tar 包,将其中包含的可执行文件放置在您的路径中,然后您就可以使用了。
用法: omegasort [<flags>] [<file>]
标志
短 | 长 | 描述 |
---|---|---|
-s |
--sort <SORT> |
要使用的排序类型。请参阅以下选项。 |
-l |
--locale<LOCALE> |
用于排序的区域设置。如果未指定,则按代码点顺序排序。 |
-u |
--unique |
使文件内容唯一,或在使用 --check 时检查它们是否唯一。 |
--comment-prefix PREFIX |
位于注释之前的字符串。如果设置了此选项,则以该字符串开始的注释将被保留,并在排序输出的同一行之前。如果注释之前有空行,则该空行也将被保留,除非注释是文件中的第一件事。如果还设置了 --unique 标志,则仅保留重复行的第一个实例的注释。如果还设置了 --reverse flag 标志,则仅保留最后一个实例的注释。 |
|
-c |
--case-insensitive |
不区分大小写排序。注意,许多区域设置默认都是这样做的,所以如果你指定了区域设置,即使没有这个标志也可能得到不区分大小写的输出。 |
-r |
--reverse |
以逆序排序。 |
--windows |
将路径解析为Windows路径进行路径排序。 | |
-i |
--in-place |
直接修改文件,而不是创建备份。 |
--stdout |
将排序后的输出打印到stdout,而不是创建新文件。 | |
--check |
检查文件是否已排序,而不是对其进行排序。如果文件未排序,则退出状态将为1。 | |
--debug |
在运行时打印调试信息。 | |
-h |
显示帮助摘要。 | |
--help |
显示扩展帮助,其中包含有关每种排序类型的详细信息。 | |
-V |
--version |
显示应用程序版本。 |
位置参数
[<file>]
要排序的文件。
排序选项
text
- 按指定区域设置将文件作为文本排序numbered-text
- 假设每行以数字前缀开头,然后根据指定区域设置按文本排序datetime-text
- 假设每行以日期或日期时间前缀开头,然后根据指定区域设置按文本排序path
- 假设每行是路径,按路径深度排序,深度越深,路径越靠后ip
- 假设每行是IP地址network
- 假设每行是CIDR形式的网络
文本 (--sort text
)
此选项将文件中的每一行作为文本排序,不进行任何特殊解析。确切的排序方式由--locale
、--case-insensitive
和--reverse
标志确定。
编号文本 (--sort numbered-text
)
此选项假设文件的每一行以一个数值开头,后跟可选的非数值文本。
行不应在数字前有任何前置空格。数值可以是整数(包括0)或简单的浮点数(不使用科学记数法)。
行将首先按数字排序。如果两行具有相同的数字,则将按上述文本排序。
没有数字的行总是排在有数字的行后面。
此排序方法接受--locale
、--case-insensitive
和--reverse
标志。
日期时间 (--sort datetime-text
)
此排序方法假设每一行以一个日期或日期时间开头,其中不包含任何空格。这意味着包含日期和时间的字符串需要以类似"2019-08-27T19:13:16"的格式。
行不应在日期时间前有任何前置空格。
此排序方法接受--locale
、--case-insensitive
和--reverse
标志。
路径 (--sort path
)
将每一行视为路径。
路径按以下规则排序
- 绝对路径在相对路径之前。
- 在按路径内容排序之前,先按路径深度排序,所以/z在/a/a之前。
- 如果传递了
--windows
标志,则带有驱动器字母或UNC名称的路径将首先根据该前缀进行排序。带有驱动器字母或UNC名称的路径在无此类名称的路径之前排序。
此排序方法除了接受--windows
标志外,还接受--locale
、--case-insensitive
和--reverse
标志。
IP (--sort ip
)
此方法假设每一行都是一个IPv4或IPv6地址(不是网络)。
排序方法与每一行都对应地址的整数相同。IPv4地址始终排在IPv6地址之前。
此排序方法接受--reverse
标志。
网络 (--sort network
)
此方法假设每一行都是一个以CIDR表示法的IPv4或IPv6网络。
如果有两个具有相同基本地址的网络,它们将按网络更大的顺序排序(因此1.1.1.0/24排在1.1.1.0/28之前)。IPv4网络始终排在IPv6网络之前。
此排序方法接受--reverse
标志。
依赖关系
~21–32MB
~448K SLoC