私は以下の行から 'identifier' の値を取得するために sed を使用しようとしています。これは以下の例では文字列 'TestStudioJobResponseMessages' です。また、一部の行には文字列 uuid が含まれていない可能性があるため、sed 式では文字列 uuid を使用したくありません。したがって、理想的には、私が探しているのは 'identifier=' の後の最初の二重引用符のペアの間の値です。
sed -n 's/.\*identifier=\"\(.\*\)\" .*/\1/p'
行の終わりまですべてが実行されます。
sibresources:SIBQueue xmi:id="SIBQueue_1298124464618" 識別子="TestStudioJobResponseMessages" uuid="8CC71271B2F1D3CF65984403" 説明="" overrideOfQOSByProducerAllowed="true" maxFailedDeliveries="100" exceptionDestination="$DEFAULT_EXCEPTION_DESTINATION" sendAllowed="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/'