Вот пример того, как вы можете использовать awk для получения желаемого результата.Предположим, что ваш исходный входной файл - sample.txt. Сначала нужно выполнить его обратную сортировку (sort -nr), а затем вы можете предоставить awk для вновь отсортированного файла вместе с переменной времени через аргумент awk "-v".Выполните свои тесты внутри awk, используйте «next» для пропуска строк и «exit» для выхода из скрипта awk, когда это необходимо.
#!/bin/bash
#
for i in 0 1 2 3
do
sort -nr sample.txt |awk -v time=$i 'BEGIN{number=0}''{
if($1>=(time+1)){next}
else if( $1>=time && $1 <(time+1))
{number+=1}
else{
printf "[ %d - %d [ : %d records\n",time,time+1,number;exit}
}'
done
Вот пример файла:
0.1
0.2
0.8
.
.
0.94
.
.
1.5
1.9
.
3.0
3.6
Вот вывод программы:
[ 1 - 2 [ : 5 records
[ 2 - 3 [ : 8 records
[ 3 - 4 [ : 2 records
Надеюсь, это поможет!