我尝试将字符串元素按降序排序,但结果令我吃惊。我可以看到7.1.1
在7.10.1
之前,不知道为什么。
$ cat sort.sh
#!/bin/bash
for i in $( echo "5.2.0 5.1.2 7.1.1 7.10.1" | tr ' ' '\n' | sort -r )
do
echo $i
done
输出:
$ ./sort.sh
7.1.1
7.10.1
5.2.0
5.1.2
预期输出:
$ ./sort.sh
7.10.1
7.1.1
5.2.0
5.1.2
我错过了什么吗?任何提示都会很有帮助。
谢谢
1条答案
按热度按时间zpqajqem1#
Sort使用当前区域设置指定的排序规则。请参阅GNU Coreutils FAQ中的“Sort does not sort in normal order!”。GNU
sort (1)
手册页包含以下警告:***警告***环境指定的区域设置会影响排序顺序。请设置LC_ALL=C以获取使用本机字节值的传统排序顺序。
如果你特别想要sort version numbers,参见GNU sort中的
-V
命令行选项:-V,--版本排序
文本中(版本)编号的自然排序