【发布时间】:2021-07-09 15:40:53
【问题描述】:
我有一个数组:
a=("toto.blabla" "toto.dlabla" "totodlabla")
然后我会这样做:
IFS=$'\n'; echo "${a[*]}" | sort -d; unset IFS
但结果是:
toto.blabla
totodlabla
toto.dlabla
而不是:
toto.blabla
toto.dlabla
totodlabla
为什么排序命令不处理点?
最好的问候,
奥利维尔
【问题讨论】:
-
“不处理点”是什么意思?
.的字符代码比字母低,因此排在它们前面。 -
而
-d是“仅考虑空格和字母数字字符”的选项 -
顺便说一句,你不应该
unset IFS,你应该把它设置回正常的默认值。 -
或者使用
printf '%s\n' "${a[@]}"而不是触摸IFS -
好的,谢谢你的解释,有没有办法像我想要的那样排序?