我有一个包含以下行的文件:
4/3
4/7
3/5
3/6
2/4
使用不带任何参数的sort进行排序时,它会按照您的预期排列行。使用sort -n时,输出如下:
3/5
3/6
4/3
4/7
2/4
我不明白为什么会这样。
答案 0 :(得分:2)
重现它的方法是在除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