如何使用unix命令“sort”和用户定义的排序规则列表?

如何使用unix命令“sort”和用户定义的排序规则列表?

背景:

  1. GB2312、GB18030-2005、GBK、Big5、CNS-11643 中的汉字表意字符排序/编码顺序各不相同,并且与 Unicode(包括 UTF-8)中的排序方式不同。

  2. 从 macOS 12 开始,即使正确指定,sortmacOS 中附带的命令也不会考虑 GB18030 / CNS-11643 / Big5 的编码序列。LC_COLLATE=zh_CN.GB18030 (or zh_TW.Big5, etc.)

最小工作示例:将此 shell 命令添加到您的 macOS Automator 应用程序,将内容发送到stdin

iconv -t gb18030 | LC_COLLATE=zh_CN.GB18030 sort -uf | iconv -f gb18030

自动机命令

(您可以通过 macOS 系统偏好设置将热键绑定到此 Automator 服务。)

之后,在 BBEdit 或 TextEdit 或 CotEdit...任何你喜欢的应用程序中创建一个文本文档,只要它支持 macOS“服务”,然后将以下内容复制到其中:


然后选择这两行,运行上面创建的服务。

预期结果:按照 GB18030 的规定,“一”排在“䴘”之上。

实际结果: 无效数据错误。


我将向苹果发送这个功能增强请求,但没有人可以保证这个反馈是否会被接受和处理。同时,有什么方法可以自定义我自己的排序列表,让命令sort按我的预期工作?

相关内容