как извлечь значение между двойными кавычками с несколькими двойными кавычками в строке с помощью sed

как извлечь значение между двойными кавычками с несколькими двойными кавычками в строке с помощью sed

Я пытаюсь использовать sed для извлечения значения 'identifier' из строки ниже, которая является строкой 'TestStudioJobResponseMessages' в примере ниже, также я не хочу использовать строку uuid в моем выражении sed, так как некоторые строки могут ее не иметь. Так что в идеале я ищу значение между первой парой двойных кавычек после 'identifier='

sed -n 's/.\*identifier=\"\(.\*\)\" .*/\1/p'

что приведет к результату всего до конца строки.

sibresources:SIBQueue xmi:id="SIBQueue_1298124464618" identifier="TestStudioJobResponseMessages" uuid="8CC71271B2F1D3CF65984403" description="" overrideOfQOSByProducerAllowed="true" maxFailedDeliveries="100" exceptionDestination="$DEFAULT_EXCEPTION_DESTINATION" sendAllowed="true" receiveAllowed="true"

решение1

Кажется, вы обрабатываете XML-файл. Используйте подходящий инструмент для обработки XML, напримерхш:

open file.xml ;
register-namespace sr http://www.ibm.com/websphere/appserver/schemas/6.0/sibresources.xmi ;
for //sr:SIBQueue echo @identifier ;

решение2

Используя GNU sed:

sed -r 's/.*identifier="([a-zA-Z]+)".*/\1/'

ИЛИ

sed -r 's/.*identifier="([^"]+)".*/\1/'

Связанный контент