Используйте awk для преобразования байтов в килобайты при выводе в сеть

Попытка использовать geektool для отображения средних килобайт на моем Mac

Думая использовать sar awk и grep для этого, но sar выводит в байтах, и я хочу Kbytes

sar -n DEV 1 1 | grep -i 'Среднее.* EN0' (очевидно, будет использовать больше данных, но 1 1 быстро)

Образец вывода

Average:   en0            1            68           2           132

sar -n DEV 1 1 | grep -i 'средний.*en0' | awk '{print $4, $6}'

Образец вывода

68 132

Как бы я использовал awk для преобразования этого вывода байтов / пс в Кбайт / пс?

Ответ:

sar -n DEV 1 1 | grep -i 'average.*en0'| awk '{printf "i: %.2f Kbps\no: %.2f Kbps\n", $4 / 1024, $6 / 1024 }'

Это заменяет выполнение с netstat с 11 строками кода, который, я думаю, был менее точным и много кода

2 ответа

Решение
awk '{printf "%.2f %.2f\n", $4 / 1024, $6 / 1024 }'

будет печатать килобайты с двумя десятичными знаками.

$ line="Average:   en0            1            68           2           132"
$ echo "$line" | awk '{printf "%.2f %.2f\n", $4 / 1024, $6 / 1024 }'
0.07 0.13

В моем sar (sysstat 10.0.5) $4 является txpck/s а также $6 является txkB/s, Таким образом, деление на 1000 соотв. 1024 дадут Ktxpck/s а также txMiB/s:

sar -n DEV 1 1 | awk '/Average.*en0/ {print $4/1000, $6/1024}'

Другие вопросы по тегам