Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/bash
- function usage() {
- echo "analyzer.sh [ПАРАМЕТР] <ФАЙЛ> [ИСТОЧНИК]"
- echo "Ищет медиану по времени обработки запроса в ФАЙЛе для указанного в параметрах ИСТОЧНИКа (по всем запросам, если он не указан)."
- echo ""
- echo "Аргументы"
- echo " -h, --help показать эту справку и выйти"
- exit 0
- }
- if [ "$#" -gt 2 ] || [ -z "$1" ] || [[ "$1" =~ ^-h$|^--help$ ]] || [[ "$2" =~ ^-h$|^--help$ ]]; then
- usage
- fi
- if [ ! -e "$1" ]; then
- echo "Файл $1 не существует"
- exit 1
- fi
- if [ ! -r "$1" ]; then
- echo "Нет прав на чтение $1"
- exit 1
- fi
- re="^(([0-9][0-9]?|[0-1][0-9][0-9]|2[0-5][0-5]|2[0-4][0-9])[.]){3}([0-9][0-9]?|[0-1][0-9][0-9]|2[0-5][0-5]|2[0-4][0-9])$"
- if [[ -n $2 && ! "$2" =~ $re ]]; then
- echo "Источник должен быть правильным IPv4 адресом"
- exit 1
- fi
- awk -v source="$2" -F "|" '
- $0~source {arr[i++] = $5}
- END {
- n = asort(arr)
- if (n == 0)
- exit
- else if (n == 1) {
- print arr[1]
- exit
- }
- res = 0
- if (n % 2 == 0)
- res = arr[n/2]
- else
- res = (arr[int(n/2)] + arr[int(n/2) + 1]) / 2.0
- gsub(/ /, "", res)
- print res
- }
- ' "$1"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement