Я пытаюсь использовать 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/'