перевода байт в гигобайты

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
bars
Сообщения: 952
ОС: BSD/LINUX

перевода байт в гигобайты

Сообщение bars »

Привет.
Есть переменная в байтах
OUT=`netstat -bn -I ix0 | awk '/ix0 1500 <Link#1>/ {print $11}'`
Получаем
netstat -bn -I ix0 | awk '/ix0 1500 <Link#1>/ {print $11}'
177575175731
Как мне одной командой сделать сразу с переводом в гигобайты?
Не хочется делать промежуточную переменную для отображения уже сконвертированого ГИГОБАЙТА

Код: Выделить всё

echo "177575175731/1024^3" | bc
165
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 901
ОС: debian, fedora (i3-wm)

Re: перевода байт в гигобайты

Сообщение olecya »

bars писал:
12.09.2023 16:04
{print $11}
Раз уж вы используете awk, то можете форматировать вывод как вам угодно:
{printf("%.2f\n", $11 /1024/1024/1024)}
Или просто используйте опцию -h (human readable) в самой утилите netstat. Будут выводиться значения с суффиксами.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 952
ОС: BSD/LINUX

Re: перевода байт в гигобайты

Сообщение bars »

olecya писала:
12.09.2023 17:48
Раз уж вы используете awk, то можете форматировать вывод как вам угодно:
{printf("%.2f\n", $11 /1024/1024/1024)}

Или просто используйте опцию -h (human readable) в самой утилите netstat. Будут выводиться значения с суффиксами.
Спасибо про ключ h я что то не подумал.
А что это означает?

Код: Выделить всё

"%.2f\n"

Код: Выделить всё

netstat -bn -I ix0 | awk '/ix0    1500 <Link#1>/ {print ($11 /1024/1024/1024)}'
165.508
Можно деление сделать с округлением?
Добавлено (18:41):

Код: Выделить всё

netstat -bn -I ix0 | awk '/ix0    1500 <Link#1>/ {print("%.2f \n",$11 /1024/1024/1024)}'
%.2f 
 165.515
Добавлено (18:52):

Код: Выделить всё

echo 166.726 | awk '{printf "%.0f\n",$1}'
167
так округляется, виновата думаю круглая скобка.
Добавлено (18:55):

Код: Выделить всё

netstat -bn -I ix0 | awk '/ix0    1500 <Link#1>/ {print $11 /1024/1024/1024}' | awk '{printf "%.0f\n",$0}'
166
Работает.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 901
ОС: debian, fedora (i3-wm)

Re: перевода байт в гигобайты

Сообщение olecya »

bars писал:
12.09.2023 18:35
так округляется, виновата думаю круглая скобка.
Нет. Вы в следующем варианте перепутали команды print c printf
bars писал:
12.09.2023 18:35
{print("%.2f \n",$11 /1024/1024/1024)}

Код: Выделить всё

{printf("%.2f\n", $11 /1024/1024/1024)}
или

Код: Выделить всё

{printf "%.2f\n", $11 /1024/1024/1024}
Эти строки форматирования сокращают результат до двух знаков после запятой с округлением.
Добавлено (20:36):
Только целая часть, так же с округлением:

Код: Выделить всё

{printf "%.f\n", $11 /1024/1024/1024}
Спасибо сказали: