我想通过反向元素的第二个和第三个字符对列表中的元素进行排序,即先按第3个字符排序,然后按第2个字符排序。
例如。如果有像这样的数组
array=(XA11000 XB21000 XA31000 XB12000)
所需的排序输出为(XA31000 XB21000 XB12000 XA11000)
相对简单,没有每个元素末尾的4位数
echo "${array[@]}"|rev | sort -r | rev
会奏效。
但是,我不太清楚这最终会如何与数字一起使用。有什么建议吗?
答案 0 :(得分:3)
sort
有-k
选项,您可以在其中指定排序方式:
( IFS=$'\n'
echo "${array[*]}" | sort -k1.3,1.3r -k1.2,1.2r
)
即。按第一个单词第三个字符(-k1.3
)到第一个单词第三个字符(,1.3
)的子字符串排序r
,按第一个单词第二个字符进行二级排序。