使用shell脚本按降序对字符串元素集进行排序

wgeznvg7  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(147)

我尝试将字符串元素按降序排序,但结果令我吃惊。我可以看到7.1.17.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

我错过了什么吗?任何提示都会很有帮助。
谢谢

zpqajqem

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,--版本排序
文本中(版本)编号的自然排序

相关问题