如何将按字典顺序排序的数组输出转换为数字顺序

如何将按字典顺序排序的数组输出转换为数字顺序

我有一个包含以下形式数据的文本文件:

int array[0]
int array[1001]
int array[1002]
int array[1003]
int array[2]
int array[2001]
int array[2002]
...

换句话说,这些数字似乎是按照某种字典顺序列出的。我想对文件进行排序,使其内容如下:

int array[0]
int array[1]
int array[2]
int array[3]
int array[4]
int array[5]
int array[6]
...

我将如何执行这种排序转换?sort似乎不足以完成任务。

答案1

您可以在分隔符sort上使用数字[

sort -t\[ -nk2,2 <<\IN
int array[0]
int array[1001]
int array[1002]
int array[1003]
int array[2]
int array[2001]
int array[2002]
IN 

输出

int array[0]
int array[2]
int array[1001]
int array[1002]
int array[1003]
int array[2001]
int array[2002]

答案2

对于有文本和数字的情况,另一种选择是--version-sort

sort -V

相关内容