На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
bars
Сообщения: 725
ОС: BSD/LINUX
Сообщение
bars » 20.06.2022 12:40
Привет.
Подскажите пожалуйста как лучше вырезать часть строки от и до?
Пример.
В FreeBSD использования свапа пункт в top динамический.
Пункт used появится только при активном использовании.
Код: Выделить всё
top -n 1 | awk '/Swap:/'
Swap: 9207M Total, 9207M Free
Последний раз редактировалось bars 26.06.2022 11:52, всего редактировалось 1 раз.
Bizdelnick
Модератор
Сообщения: 20039
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 20.06.2022 13:30
Используйте подстановку sed с захватом подстроки.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
olecya
Сообщения: 855
ОС: debian, fedora (i3-wm)
Сообщение
olecya » 20.06.2022 16:53
bars
А что надо то? Не хотите видеть used в строке? В awk есть поля $1 и количество полей, переменная NF
Добавлено (17:32):
Shell
top -bn 1 | awk '/Swap:/ && NF=4'
MiB Swap: 14760.0 total,
bars
Сообщения: 725
ОС: BSD/LINUX
Сообщение
bars » 20.06.2022 20:37
olecya писала: ↑ 20.06.2022 16:53
А что надо то? Не хотите видеть used в строке? В awk есть поля $1 и количество полей, переменная NF
Наоборот хотел понять как показать только used.
В FreeBSD пункт использования свапа динамический, used пункт появляется только если свап используется.
olecya
Сообщения: 855
ОС: debian, fedora (i3-wm)
Сообщение
olecya » 20.06.2022 21:20
Если не смущает пробельная строка при отсутствии used то:
Добавлено (22:04):
P.S.
swapctl -hs должно всегда показывать
bars
Сообщения: 725
ОС: BSD/LINUX
Сообщение
bars » 25.06.2022 15:23
olecya писала: ↑ 20.06.2022 21:20
swapctl -hs
Самое то!
Спасибо.
Не пользовался раньше этой утилитой.
olecya писала: ↑ 20.06.2022 21:20
awk '/Swap:/ && NF>5 {print $6 FS $7}'
А что делает в данном примере && NF>5 и FS?
olecya
Сообщения: 855
ОС: debian, fedora (i3-wm)
Сообщение
olecya » 25.06.2022 16:58
bars писал: ↑ 25.06.2022 15:23
А что делает в данном примере && NF>5 и FS?
NF - внутренняя переменная в которой определяется количество полей в каждой записи (строке).
bars писал: ↑ 20.06.2022 12:40
Пункт used появится только при активном использовании.
Когда появляется поле
used , выражение
NF>5 возвращает
true а значит выполняется команда
print.
FS - (она же опция
-F ) внутренняя переменная хранящая регулярное выражение описывающее входной разделитель полей. Правильно указывать
OFS (выходной разделитель полей чтобы не путаться), но в данном случае текстовый процессор понимает и подставляет пробельный символ определенный по умолчанию в
OFS .
bars
Сообщения: 725
ОС: BSD/LINUX
Сообщение
bars » 26.06.2022 11:51
olecya писала: ↑ 20.06.2022 21:20
awk '/Swap:/ {print $6 FS $7}'
Код: Выделить всё
# top -n 1 | awk '/Swap:/'
Swap: 9918M Total, 47M Used, 9871M Free
Чуть поправил команду.
Код: Выделить всё
top -n 1 | awk '/Swap:/ && NF>5 {print $4 FS $5}'
47M Used,