我有一个包含以下形式数据的文本文件:
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