LINUX.ORG.RU

вопрос по awk


0

0

Есть столбец данных состоящий из целых значений. Из этих чисел надо выбрать несколько самых максимальных. Я немогу понять как это сделать.


cat файл | awk '{print $столбец_с_циферками}' | sort -n | tail -n сколько_чисел_нужно

так? или обязательно нужно с помощью awk?

stray
()
Ответ на: комментарий от NoName

awk '{b[a++]=$0}END{print b[a-3];for(i=0;i<a;i++) if(i != (a-3)) print b[i]}'

NoName
() автор топика
Ответ на: комментарий от NoName

>как переставить две строки местами?

n1=3   # первая строка
n2=7   # вторая строка

awk -v a=$n1 -v b=$n2 ' NR < a || NR > b
                        NR == a          {buf[b]=$0; k=a+1}
                        NR > a && NR < b {buf[k++]=$0}
                        NR == b          {print; for(i=a;i<=b;i++) {print buf[i]}}
                      '

sdio ★★★★★
()

>Из этих чисел надо выбрать несколько самых максимальных.

nmax=5

awk -v n=$nmax ' NR <= n {buf[NR]=$1}
                 NR > n  {min=$1
                          for(i=1;i<=n;i++) {
                             if (min > buf[i]) {
                               min=buf[i]
                               j=i
                             }
                          }
                          if(buf[j] < $1) buf[j]=$1
                         }
                 END     {for(i=1;i<=n;i++) {print buf[i]}
               '

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.