我試圖使用sed 從下面的行中檢索“標識符”的值,在下面的範例中,該行是字串“TestStudioJobResponseMessages”,而且我不想在sed 表達式中使用字串uuid,因為某些行可能沒有該值。因此,理想情況下,我要尋找的是 'identifier=' 之後第一對雙引號之間的值
sed -n 's/.\*identifier=\"\(.\*\)\" .*/\1/p'
這將導致一切直到行尾。
sibresources:SIBQueue xmi:id =「SIBQueue_1298124464618」識別碼=「TestStudioJobResponseMessages」uuid =「8CC71271B2F1D3CF65984403」描述=「8CC71271B2F1D3CF65984403」描述=「8CC71271B2F1D3CF65984403」。 $DEFAULT_EXCEPTION_DESTINATION」sendAllowed=「真」接收允許=「真」
答案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/'