Bash - 按元素的子串排序

时间:2015-09-07 20:32:14

标签: bash sorting

我想通过反向元素的第二个和第三个字符对列表中的元素进行排序,即先按第3个字符排序,然后按第2个字符排序。

例如。如果有像这样的数组

array=(XA11000 XB21000 XA31000 XB12000)

所需的排序输出为(XA31000 XB21000 XB12000 XA11000)

相对简单,没有每个元素末尾的4位数

echo "${array[@]}"|rev | sort -r | rev

会奏效。

但是,我不太清楚这最终会如何与数字一起使用。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

sort-k选项,您可以在其中指定排序方式:

(   IFS=$'\n'
    echo "${array[*]}" | sort -k1.3,1.3r -k1.2,1.2r
)

即。按第一个单词第三个字符(-k1.3)到第一个单词第三个字符(,1.3)的子字符串排序r,按第一个单词第二个字符进行二级排序。