2013-06-06 3 views
0

Как я могу отсортировать массив чисел в awk? Рассмотрим "sortNum.awk":Сортировка массива чисел в awk

{ 
    split($0,a," ") 
    for (i in a) print a[i] 
    print "####" 
    asort(a) 
    for (i in a) print a[i] 
} 

Бег с echo "4 3 2 1" | awk -f sortNum.awk дает

1 
4 
3 
2 
#### 
4 
1 
2 
3 

Я использую GNU Awk версии 3.1.8.

+1

Если вы хотите, чтобы он просто работал и не заботился о 'awk' конкретно, это Perl one-liner:' echo '4 3 2 1 "| perl -e "print join '', sort split '\ s', <>" ' – mvp

ответ

4

for (i in a) не выбирает индексы в числовом порядке, это необходимо сделать явно.

{ 
    n = split($0,a," "); 
    for (i = 1; i <= n; i++) print a[i]; 
    print "####" 
    asort(a) 
    for (i = 1; i <= n; i++) print a[i]; 
} 
+0

Большое спасибо! Кажется, это работает :) –

Смежные вопросы