awk '{
count[$1]++
min[$1]=(!($1 in min) || $2<min[$1]) ? $2 : min[$1]
max[$1]=(!($1 in max) || $2>max[$1]) ? $2 : max[$1]
}
END {
print "Name","Count","Minimum","Maximum"
print "----","-----","-------","-------"
for(i in count) print i,count[i],min[i],max[i]
}' file | column -t
Логика присвоения минимального значения массива такова:
Если имя первого поля не существует в массиве(!($1 in min)
)или (||
), второе поле меньше, чем текущее значение массива ($2<min[$1]
), тогда(?
)присвоить новое значение $2
, иначе(:
)присвоить старое значение min[$1]
.
| column -t
используется для красивого -вывода результата в виде таблицы. Вы можете удалить его, если он вам не нужен.
Выход:
Name Count Minimum Maximum
---- ----- ------- -------
PION+ 2 0.167848 1.374297
PION- 3 0.215176 22.716532
NEUTRON 2 8.043279 20.900103
Take note that security is not a concern here: mainly, it is about knowing that the data have not been accidentally corrupted during upload, storage and download.
Если это вас не беспокоит, нет необходимости использовать более продвинутые алгоритмы хэширования с интенсивным использованием ЦП. Вероятность случайного сбоя бита передачи (или нескольких битов ), создающих один и тот же хэш md5, практически равна нулю. Например. даже CRC32 может быть достаточно в этом случае.
Лично, когда мне нужно отправить кому-то данные и я должен быть уверен, что они будут отправлены без ошибок, я сжимаю с помощью RAR и добавляю запись восстановления (1% ). Для этого нет встроенных утилит Unix, но вы можете комбинировать сжатие с отправкой par2
данных для восстановления, но мы говорим о нескольких файлах.