передать переменную на исполнения
Модераторы: /dev/random, Модераторы разделов
передать переменную на исполнения
Привет.
Есть команда мониторинга диска.
smartctl -A /dev/nvme0 | grep "Data Units Read" | awk '{print $5}' | cut -c 2-
38,0
Выдает в гигабайтах, хочу перевести в терабайты данные.
Для этого нужно разделить на 1000.
Городить структуру из кучи переменных не хочется.
Вопрос как передать переменную команды smartctl (38) для продолжения ее использования.
smartctl -A /dev/nvme0 | grep "Data Units Read" | awk '{print $5}' | cut -c 2- | echo "38/1000" | bc
Вроде просто но что то застопорился на этом.
Есть команда мониторинга диска.
smartctl -A /dev/nvme0 | grep "Data Units Read" | awk '{print $5}' | cut -c 2-
38,0
Выдает в гигабайтах, хочу перевести в терабайты данные.
Для этого нужно разделить на 1000.
Городить структуру из кучи переменных не хочется.
Вопрос как передать переменную команды smartctl (38) для продолжения ее использования.
smartctl -A /dev/nvme0 | grep "Data Units Read" | awk '{print $5}' | cut -c 2- | echo "38/1000" | bc
Вроде просто но что то застопорился на этом.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
Re: передать переменную на исполнения
xargs?
Ну и bc -l
Ну и bc -l
Re: передать переменную на исполнения
smartctl -A /dev/nvme0 | grep "Data Units Read" | awk '{print $5}' | cut -c 2- | awk '{print $1/1000}'
Сделал так, топорно, но работает.
Помница была переменная sh которая содержит последний вывод от команды.
Не помню как она называется.
Сделал так, топорно, но работает.
Помница была переменная sh которая содержит последний вывод от команды.
Не помню как она называется.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
Re: передать переменную на исполнения
Чуть переделал.
smartctl -A /dev/nvme0 | grep "Data Units Read" | awk '{sub(/^\[/,"",$5); print $5/1000}'
0,0381
Data Units Read: 74 421 [38,1 GB]
smartctl -A /dev/nvme0 | grep "Data Units Read" | awk '{sub(/^\[/,"",$5); print $5/1000}'
0,0381
Добавлено (16:46):
# smartctl -A /dev/nvme0 | grep "Data Units Read"
Data Units Read: 74 421 [38,1 GB]
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
Re: передать переменную на исполнения
Тогда так:
Код: Выделить всё
smartctl -A /dev/nvme0 | awk '/Data Units Read/ {sub(/^\[/,"",$5); print $5/1000}'
Добавлено (16:48):
Код: Выделить всё
echo 1 2 3 4 5
echo $_
Последний раз редактировалось olecya 26.03.2021 16:51, всего редактировалось 1 раз.
Спасибо сказали:
Re: передать переменную на исполнения
Мне нравится такое исполнение, его и буду использовать.
Спасибо!
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
Re: передать переменную на исполнения
Я пробовал с помощью -F . но что то тщетно!
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
Re: передать переменную на исполнения
Например:
или
Подобрать номер поля $7 или $8
Код: Выделить всё
awk -F'[[:space:][]*' '/Data Units Read/ {print $6}'
Код: Выделить всё
awk -F'[ []' '/Data Units Read/ {print $6}'
- Bizdelnick
- Модератор
- Сообщения: 20794
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: передать переменную на исполнения
env LC_ALL=C smartctl -A /dev/nvme0 | awk '/Data Units Read/{print $5/1000}'
Добавлено (17:09):
А, не, так не пойдёт. Писал, когда ещё не видел, как выглядит исходная строка.Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: передать переменную на исполнения
Попробую догадаться предпоследнее поле:
Код: Выделить всё
smartctl -A /dev/nvme0 | awk -F"[ []" '/Data Units Read/ {print $(NF-1)/1000}'
Добавлено (17:40):
Извиняюсь, я тоже не заметила пример строки и убрала лишнюю кавычку по замечанию
Последний раз редактировалось olecya 26.03.2021 17:45, всего редактировалось 1 раз.
Спасибо сказали:
Re: передать переменную на исполнения
Чуть отредактировал, убрал лишний '
smartctl -A /dev/nvme0 | awk -F"[ []" '/Data Units Read/ {print $(NF-1)/1000}'
0,0381
Спасибо.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Re: передать переменную на исполнения
Как awk работает с запятой? Странно да? Похоже все таки там точка
Добавлено (18:28):
Нет во FreeBSD отрабатывает с запятойСпасибо сказали:
- Bizdelnick
- Модератор
- Сообщения: 20794
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: передать переменную на исполнения
Проверил. Забавное поведение: original-awk учитывает локаль при разборе, а gawk и mawk всегда хотят точку в качестве разделителя.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали: