sed + находят значение перед словом в строке

EDIT По ссылке, которую я использовал в качестве ссылки, можно найти дополнительные опции. Если установлен [1186549]sshpass[1186550], можно автоматизировать ssh-соединение, чтобы не вводить пароль для каждой машины:

1. Установите

sshpass

Это замечательная маленькая программа, позволяющая передавать пароль [1186553]ssh[1186554] в качестве параметра командной строки. Очевидно, что это не очень безопасное решение, и я настоятельно рекомендую вам прочитать раздел "Вопросы безопасности" в [1186555]man sshpass[1186556]. В любом случае, вероятно, оно доступно в репозиториях вашего дистрибутива, на системах, основанных на Debian, его можно установить с помощью

=IF(I1=1,(IF(A2=A1,1,0)),(IF(A2=A1,0,1)))

. Я не могу проверить, так как у меня нет машины, основанной на RedHat, но, насколько я могу судить по поиску [1186557] здесь [1186558], он должен быть установлен на Fedora с помощью

После его установки можно просто запустить

  • Опция [1186559]-e [1186560] сообщает [1186561]sshpass[1186562], чтобы получить пароль от переменной [1186563]SSHPASS[1186564]. Это немного более безопасно, чем задавать его в качестве параметра с помощью опции [1186565]-p[1186566].
  • ВАЖНО:
  • Это произойдет беззвучно, если сервер, к которому вы подключаетесь, неизвестен, если его открытый ключ не хранится на вашей машине. Если кажется, что это не работает, просто подключите один раз ([1186567]ssh[1186568] или [1186569]scp[1186570]) к удаленному компьютеру и примите его открытый ключ. Скрипт

References

scp для автоматизации scp в сети

1
01.10.2014, 19:02
3 ответа
awk -v RS="[, ]" '/free/{print a}{a=$0}'

Объяснение

  • Установите разделитель рекорда в , , а и пространство , поэтому число, предшествующее каждую строку, является записью сама по себе, и так и строка.
  • Имея все как собственное рекорд, awk будет обрабатывать каждый элемент один на один
  • для всех записей до бесплатно , он будет игнорировать {print a} , потому что условие Не совпадает, и он будет пропущен к {a = $ 0} , который будет хранить в настоящее время обработанную запись в переменной A
  • один раз / Free / awk будет просто {print} , где A содержит запись прямо перед матчем
2
27.01.2020, 23:13

с использованием GNU SED (Только Linux):

top -bn1 | sed -rn '/Mem/{s/.* ([^ ]*) free.*/\1/p;}'

Использование любого SED :

top -bn1 | sed -n '/Mem/{s/.* \([^ ]*\) free.*/\1/p;}'

Использование Perl :

top -bn1 | perl -lne '/Mem.* ([\d]+)\s*free/ && print $1'

Использование инструмента, предназначенного для задания (проверено на Linux, не уверена, если Free доступен на Solaris):

free | awk '/Mem/{print $4}'

Другой инструмент, предназначенный для задания (должен работать как на Linux, так и Solaris):

vmstat 2 2 | tail -n 1 | awk '{print $4}'

Перейти к источнику (это работает на Linux, не уверены в Solaris):

awk '/MemFree/{print $2}' /proc/meminfo 
2
27.01.2020, 23:13
$ top -bn1 | grep free
KiB Mem:   8117084 total,  6578888 used,  1538196 free,   302216 buffers
KiB Swap:  8060924 total,    26004 used,  8034920 free,  1564856 cached
$ top -bn1 | grep -oP '\S+(?=\s+free)'
1544132
8034920

требует GNU GreeP, но вы пометили «Linux», так что вы в порядке

для просто «MEM»:

top -bn1 | grep -oP 'Mem.*\s\K\S+(?=\s+free)'
3
27.01.2020, 23:13

Теги

Похожие вопросы