如何使用 sed 檢索雙引號之間具有多個雙引號的值

如何使用 sed 檢索雙引號之間具有多個雙引號的值

我試圖使用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/'

相關內容