Используйте 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}'