linux - 为什么sort -n这样排序>

标签 linux bash sorting

我有一个包含以下几行的文件:

4/3
4/7
3/5
3/6
2/4

当使用不带任何参数的 sort 进行排序时,它会按照您的预期排列行。当使用 sort -n 时,输出如下:

3/5
3/6
4/3
4/7
2/4

我不明白为什么会发生这种情况。

最佳答案

重现它的一种方法是在每行前面添加零宽度空格(2/4 除外):

U+200B ZERO WIDTH SPACE [Cf]

以下是包含上述排列的十六进制字符串:

% echo "e2808b342f330ae2808b342f370ae2808b332f350ae2808b332f360a322f340a" \
  | xxd -r -p | sort -n
3/5
3/6
4/3
4/7
2/4

我怀疑是这种情况,但也许还有其他不可打印的字符,您可以尝试使用十六进制转储:

xxd -p < my_file

关于linux - 为什么sort -n这样排序>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37515003/

相关文章:

c++ - 套接字文件描述符在不同进程之间是相同的

linux - Linux 中的 sleep 机制如何工作

jquery - 如何使用 jQuery 对数据表按字母顺序排序且不区分大小写?

c - 如何使用预处理器识别 Linux 上的 64 位构建?

linux - 如何保存所有二进制 Web 浏览器流量

linux - numactl 中的节点距离是什么意思?

javascript - 按字母顺序对多个键上的javascript对象进行排序

php postfix 不发送电子邮件

bash - 将 stdout 和 stderr 都重定向到文件,仅打印 stdout

java - 按优先级队列排序整数