2016-04-02 3 views
0

Как отобразить ниже результат группы ниже 50%, ниже 80%, 80-90%, выше 90%Sql группы по признаку, как с AWK

Filesystem  Size Used Avail Use% Mounted on 
/dev/loop0  18G 15G 2.5G 86%/
none   4.0K  0 4.0K 0% /sys/fs/cgroup 
udev   483M 4.0K 483M 1% /dev 
tmpfs   99M 1.4M 97M 2% /run 
none   5.0M  0 5.0M 0% /run/lock 
none   492M 1.8M 490M 1% /run/shm 
none   100M 20K 100M 1% /run/user 
/dev/sda3  167G 157G 9.9G 95% /host 

до сих пор я в состоянии выборки Точки крепления & пространства используя AWK

df -hk | awk '{print $5 " " $6}' 

ожидается:

0-50%: 7 
80-90%: 1 
90-100%: 1 
+1

Что вы пробовали, чтобы на самом деле группировать результаты? Ваш существующий awk-скрипт, очевидно, не пытается это сделать. По крайней мере, пожалуйста, [отредактируйте свой вопрос] (http://stackoverflow.com/posts/36369456/edit), чтобы продемонстрировать, к чему вы стремитесь в псевдокоде, и мы можем помочь вам перевести его в awk. – Graham

+0

Обратите внимание, что скрипт 'awk', который вы показываете, дает столбцы« Использовать »и« Использовать% »; он не дает точку монтирования (которая составляет '$ 6'). –

+0

Пожалуйста, отредактируйте свой вопрос, чтобы показать ожидаемый результат с учетом ввода. –

ответ

1

awk на помощь!

$ awk -v groups='50 80 90 100' ' 
      BEGIN{n=split(groups,g);g[0]=0} 
       {sub("%","",$5); 
       for(i=1;i<=n;i++) 
        if($5+0<=g[i]) {a[g[i-1]"-"g[i]]++; next} 
       } 
      END{for(k in a) print "between: "k"%:",a[k]}' file | 
    sort -k2n 

between: 0-50%: 7 
between: 80-90%: 1 
between: 90-100%: 1