Кажется, мой синтаксис неверен.
nvidia -настройки -a '[gpu0]GPUPowerMizerMode=1'
должно быть
nvidia -настройки -a [gpu :0]/GPUPowerMizerMode=1
и т. д.
С помощьюawk
сценариев:
$ awk '/Red Hat Satellite/{ f=1; next }f && /Pool ID:/{ print $NF; exit }' yourfile
abcdxyz12340987
sed -n '/Red Hat Satellite/,/Pool ID:/{ s/.*Pool ID:[[:blank:]]*\(.*\)/\1/p; }' file
Это применяет замену, которая выбирает вашу строку после Pool ID:
. Он делает это в любой строке между строкой, содержащей строку Red Hat Satellite
, и первой строкой после нее, содержащей Pool ID:
. Команда будет печатать только результат любой успешной замены.
Следующая команда awk
сделает то же самое при условии, что строка в конце строки Pool ID:
не содержит пробелов:
awk '/Red Hat Satellite/,/Pool ID:/ { if (/Pool ID:/) print $NF }' file
grep
не подходит для этой задачи, так как плохо обрабатывает контекст ("извлечь одну строку, если есть совпадение в другой строке" ). Это, возможно, сработает, учитывая некоторые PCRE поверх нулевых -завершающих строк с использованием GNU grep
, но это будет хак.