Другой (не идеальный) использование GNU awk и asorti()
s третий строковый аргумент для управления сравнением элементов массива :
awk '
{
split($0,f,"+")
a[$0]=f[3] # a["110x16+255+63"] = 63
}
END {
OFS=", " # for pretty output
n=asorti(a,a,"@val_num_asc") # NOTICE THE THIRD ARGUMENT, using asorti but "@val..."
for (i=1;i<=n;i++) # "@ind..." would sort using the index
print i,a[i] # I wrote a over old a but you could use b
}' file
Выход:
1, 110x16+255+63
2, 178x59+417+65
3, 178x59+611+65
4, 178x59+29+65
5, 178x59+223+65
6, 240x151+462+176
7, 240x151+87+257
8, 240x151+366+355
9, 240x151+77+448
10, 240x151+468+542
11, 240x151+140+624
Используя "@ind_num_asc"
, порядок будет:
1, 110x16+255+63
2, 178x59+223+65
3, 178x59+29+65
4, 178x59+417+65
5, 178x59+611+65
6, 240x151+140+624
7, 240x151+366+355
8, 240x151+462+176
9, 240x151+468+542
10, 240x151+77+448
11, 240x151+87+257