Я хочу извлечь текст в переменной оболочки, которая находится между двумя соответствующими словами / символами, как показано ниже.
Входная строка-
extract='sometext Query State: FINISHED\n Query Status: OK\n soonnnnnnnnnnnn Query State: STARTING\n'
Я хочу чтобы извлечь состояние запроса, которое находится между текстом 'Query State' и первым появлением '\ n'
. Я использовал ниже выражение sed-
query_state=$(echo $extract | sed 's/.*Query State: \(.*\)\\n .*/\1/')
но я получаю вывод в виде - FINISHED\n Query Status: OK
, в основном, вышеприведенное дает все, что между словами «Статус запроса» и последним появлением «\ n».
Итак, Я изменил на выражение sed, как показано ниже, чтобы получить вывод 'FINISHED'
query_state=$(echo $extract | sed 's/.*Query State: \(.*\)\\n Query Status.*/\1/')
Но вышеприведенное выражение сильно зависит от текста «Статус запроса». Как я могу изменить выражение так, чтобы оно получалось точно при первом появлении '\ n'?
Обновление: я хочу извлечь состояние запроса, которое находится между первым появлением текста 'Состояние запроса' с последующим первым появлением '\ n'
-Спасибо