아래 예에서 문자열 'TestStudioJobResponseMessages'인 아래 줄에서 '식별자' 값을 검색하기 위해 sed를 사용하려고 합니다. 또한 일부 줄에는 문자열 uuid가 없을 수 있으므로 sed 표현식에 문자열 uuid를 사용하고 싶지 않습니다. 따라서 이상적으로 내가 찾고 있는 것은 'identifier=' 다음에 나오는 첫 번째 큰따옴표 쌍 사이의 값입니다.
sed -n 's/.\*identifier=\"\(.\*\)\" .*/\1/p'
라인 끝까지 모든 결과가 발생합니다.
sibresources:SIBQueue xmi:id="SIBQueue_1298124464618" 식별자="TestStudioJobResponseMessages" uuid="8CC71271B2F1D3CF65984403" 설명="" overrideOfQOSByProducerAllowed="true" maxFailedDeliveries="100" 예외 대상="$DEFAULT_EXCEPTION_DESTINATION" lowed="true" receiveAllowed="true"
답변1
XML 파일을 처리 중인 것 같습니다. 적절한 XML 처리 도구를 사용하십시오. 예:xsh:
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/'