Como comparar a saída awk com o valor int / float

0

Eu tenho arquivo contém resultados do meu teste de velocidade que foi executado nas últimas horas através do meu script. Os resultados no arquivo de texto são os seguintes, Script iniciado em segunda 23 julho 2018 04:41:11 PM IST nome do arquivo é speedtest.txt     Script iniciado em segunda 23 julho 2018 04:41:11 PM IST

root@xxxx: root@xxxx:~# 
root@xxxx: root@xxxx:~# speedtest-cli --simple
Ping: 40.629 ms
Download: 19.67 Mbit/s
Upload: 1.08 Mbit/s
root@xxxx: root@xxxx:~# speedtest-cli --simple
Ping: 51.229 ms
Download: 22.16 Mbit/s
Upload: 0.80 Mbit/s
root@xxxx: root@xxxx:~# speedtest-cli --simple
Ping: 50.924 ms
Download: 21.82 Mbit/s
Upload: 1.07 Mbit/s
root@xxxx: root@xxxx:~# speedtest-cli --simple
Ping: 51.438 ms
Download: 20.87 Mbit/s
Upload: 0.67 Mbit/s
root@xxxx: root@xxxx:~# speedtest-cli --simple
Ping: 51.149 ms
Download: 21.51 Mbit/s
Upload: 0.94 Mbit/s
root@xxxx: root@xxxx:~# exit
exit

Script done on Monday 23 July 2018 04:51:11 PM IST

Estou usando apenas a velocidade de download com o seguinte comando awk,

sudo cat speedtest.txt | grep "Download:" | cut -d ' ' -f2 | awk '{ SUM += $1} END { print SUM }' | awk '{ SUM = $1/5} END {print SUM}'

A saída do comando acima é

21.206

Agora quero verificar se o valor acima é maior que o meu valor garantido ou não. Eu tentei salvar este valor em uma variável runTime separada e compará-lo com o meu valor estático, digamos 21.206 >= 25 or not. Mas eu não consegui encontrar o comando trabalhando para mim. Ele continua adicionando uma nova linha depois de armazenada na nova variável. Então, existe alguma maneira que eu possa comparar o valor de saída com awk e pode mostrar que é verdadeiro ou falso? Estou usando o script esperar para salvar o arquivo "speedtest.txt

    
por user301923 23.07.2018 / 17:11

1 resposta

3

O canal de comando inteiro pode ser reduzido para:

$ cat speedtest.txt | awk '/Download:/{sum+=$2}END{print sum/5}'
21.206

Ou melhor, evitando o "uso inútil do gato":

$ awk '/Download:/{sum+=$2}END{print sum/5}' speedtest.txt
21.206

Para ler mais de cinco medições, use:

$ awk '/Download:/{s+=$2;c++}END{print( s/c ) }' speedtest.txt

E, para obter uma string TRUE/FALSE use:

$ awk '/Download:/{s+=$2;c++}END{print(s/=c,s>25?"TRUE":"FALSE")}' speedtest.txt
21.206 FALSE
    
por 23.07.2018 / 17:22