posixxsort
命令行实用程序将执行一些基于区域设置的奇特操作来比较给定的字符串。
我扫描了手册页,但似乎找不到让它使用原始字节值的方法。有没有办法让sort
(我有GNU coreutils版本)像C
中的qsort(array_of_my_strings, N, strcmp)
一样运行?使用另一个工具然后sort
的解决方案也很好。
为了演示,我目前得到:
printf "\xC3\xBC\n\x76\n" | sort
ü
v
因为德语元音变音ü
似乎被比较为在v之前的u,尽管\xC3
大于\x76
。
我想要的是
printf "\xC3\xBC\n\x76\n" | sort --raw-bytes-please
v
ü
1条答案
按热度按时间o75abkj41#
排序规则顺序和(多字节)字符类型受区域设置的影响。用于禁用多字节和区域设置感知行为的区域设置名称是
C
。因此:
...将只设置字符类型和排序规则顺序(假设
LC_ALL
没有设置,在这种情况下,它们将被忽略)。作为一个大锤子,你也可以用途:
尽管具有副作用,例如将用于打印错误消息的语言&c更改为最初由
sort
的开发人员编写的字符串,而没有有效的转换表。