У меня есть приложение, в котором не реализован полезный API, и единственный способ получить определенную информацию - это проанализировать вывод строки. Это оказывается очень болезненным ...
Я пытаюсь добиться этого в bash на SLES12.
Учитывая, что у меня есть следующие строки:
QMNAME(QMTKGW01) STATUS(Running)
QMNAME(QMTKGW01) STATUS(Ended normally)
Я хочу извлечь значение STATUS, ie «Нормально завершено» или «Выполняется». Обратите внимание, что линейная структура может перемещаться, поэтому я не могу рассчитывать на то, что «STATUS» будет вторым полем. так что
echo "QMNAME(QMTKGW01) STATUS(Running)" | sed "s/^.*STATUS(\(\S*\)).*/\1/"
Это работает для "Работает", но не для "Нормально завершено"
Я пробовал переключать \ S * на [\ S \ s] * в обоих "grep -o "и" sed ", но похоже, что это повреждает все регулярное выражение.