So rufen Sie mit sed einen Wert zwischen doppelten Anführungszeichen mit mehreren doppelten Anführungszeichen in einer Zeile ab

So rufen Sie mit sed einen Wert zwischen doppelten Anführungszeichen mit mehreren doppelten Anführungszeichen in einer Zeile ab

Ich versuche, mit sed den Wert von „identifier“ aus der folgenden Zeile abzurufen, die im folgenden Beispiel die Zeichenfolge „TestStudioJobResponseMessages“ ist. Außerdem möchte ich in meinem sed-Ausdruck keine Zeichenfolge „uuid“ verwenden, da einige Zeilen diese möglicherweise nicht enthalten. Idealerweise suche ich also nach einem Wert zwischen dem ersten Anführungszeichenpaar nach „identifier=“.

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

was alles bis zum Zeilenende zur Folge hätte.

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

Antwort1

Sie scheinen eine XML-Datei zu verarbeiten. Verwenden Sie ein geeignetes XML-Verarbeitungstool, z. B.xsh:

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

Antwort2

Verwenden von GNU sed:

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

ODER

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

verwandte Informationen