Добавление соответствующих Чисел в Диапазоне

Вы могли сделать это с помощью двух экземпляров находки (1)

Всегда существует cpio (1)

(cd "$soure" && find … | cpio -pdVmu "$destination")

Проверьте аргументы в пользу cpio. Те я дал

5
01.12.2013, 18:59
2 ответа

С :

$ awk '
 {arr[int(($1%50?$1:($1-1))/50)]+=$2};
 END{for(k in arr){print k*50, arr[k]}}
' file.txt | sort -k1,1n

Пример

Можно управлять форматом выходного использования printf в awk также.

$ awk '
 {arr[int(($1%50?$1:($1-1))/50)]+=$2};
 END{for(k in arr){printf "%-11s%-5s\n", k*50, arr[k]}}
' file.txt | sort -k1,1n
0          15   
50         22   
100        205  
600        10   
850        90   
7
27.01.2020, 20:37
  • 1
    Хороший, +1 тем более, что Ваше решение не требует сортировки файла, поскольку мое делает. –  terdon♦ 12.11.2013, 19:05

Это должно сделать это:

sort -g file | awk 'BEGIN{N=50}{
    if($1<=N){out[N-50]+=$2}
    else{while($1>=N){N+=50;}; 
         out[N-50]+=$2}
    }END{for(i in out){print i,out[i]} }' | sort -g
1
27.01.2020, 20:37

Теги

Похожие вопросы