cómo recuperar el valor entre comillas dobles con múltiples comillas dobles en línea usando sed

cómo recuperar el valor entre comillas dobles con múltiples comillas dobles en línea usando sed

Estoy intentando usar sed para recuperar el valor del 'identificador' de la línea siguiente, que es la cadena 'TestStudioJobResponseMessages' en el siguiente ejemplo, y tampoco quiero usar la cadena uuid en mi expresión sed ya que es posible que algunas líneas no la tengan. Idealmente, lo que estoy buscando es el valor entre el primer par de comillas dobles después de 'identificador='

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

lo que resultaría todo hasta el final de la línea.

sibresources:SIBQueue xmi:id="SIBQueue_1298124464618" identifier="TestStudioJobResponseMessages" uuid="8CC71271B2F1D3CF65984403" descripción="" overrideOfQOSByProducerAllowed="true" maxFailedDeliveries="100"ExceptionDestination="$DEFAULT _EXCEPTION_DESTINATION" sendAllowed="true" recibirAllowed="true"

Respuesta1

Parece que estás procesando un archivo XML. Utilice una herramienta de manejo de XML adecuada, por ejemploxsh:

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

Respuesta2

Usando GNU sed:

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

O

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

información relacionada