#file-sorting #text-file #flags #path #gitignore #tool #spelling

app omegasort

你需要的最后一个文本排序工具

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 网络编程

MIT/Apache

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