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/'