como recuperar o valor entre aspas duplas com múltiplas aspas duplas na linha usando sed

como recuperar o valor entre aspas duplas com múltiplas aspas duplas na linha usando sed

Estou tentando usar o sed para recuperar o valor do 'identificador' da linha abaixo, que é a string 'TestStudioJobResponseMessages' no exemplo abaixo, também não quero usar a string uuid na minha expressão sed, pois algumas linhas podem não ter isso. Então, idealmente, o que estou procurando é o valor entre o primeiro par de aspas duplas após 'identifier ='

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

o que resultaria em tudo até o final da linha.

sibresources:SIBQueue xmi:id="SIBQueue_1298124464618" identificador="TestStudioJobResponseMessages" uuid="8CC71271B2F1D3CF65984403" description="" overrideOfQOSByProducerAllowed="true" maxFailedDeliveries="100" exceçãoDestination="$DEFAULT _EXCEPTION_DESTINATION" sendAllowed="true" recebeAllowed="true"

Responder1

Parece que você está processando um arquivo XML. Use uma ferramenta adequada de manipulação de XML, por exemploxsh:

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

Responder2

Usando GNU sed:

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

OU

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

informação relacionada