Cách lấy giá trị giữa các dấu ngoặc kép với nhiều dấu ngoặc kép trong dòng bằng sed


0

Tôi đang cố gắng sử dụng sed để lấy giá trị của 'định danh' từ dòng bên dưới là chuỗi 'TestStudioJobResponseMessages' trong ví dụ bên dưới, tôi cũng không muốn sử dụng chuỗi uuid trong biểu thức sed của mình vì một số dòng có thể không có. Vì vậy, lý tưởng những gì tôi đang tìm kiếm là giá trị giữa cặp dấu ngoặc kép thứ nhất sau 'định danh ='

sed -n 's/.\*identifier=\"\(.\*\)\" .*/\1/p'

mà sẽ kết quả tất cả mọi thứ cho đến cuối dòng.

sibresource: SIBQueue xmi: id = "SIBQueue xmi:" id ""

Câu trả lời:


0

Bạn dường như đang xử lý một tệp XML. Sử dụng một công cụ xử lý XML thích hợp, ví dụ: xsh :

open file.xml ;
register-namespace sr http://www.ibm.com/websphere/appserver/schemas/6.0/sibresources.xmi ;
for //sr:SIBQueue echo @identifier ;

Cảm ơn về tùy chọn, tệp xml của nó tuy nhiên sử dụng cygwin trên máy windows, vì vậy xsh sẽ không ở đó, do đó sử dụng cygwin bash shell và tìm kiếm sed thay thế
shuklaa02

Tôi cũng đang sử dụng bash của Cygwin. xsh có thể được cài đặt bởi cpan XML::XSH2 (bạn cần libxml và Perl).
choroba

Tuy nhiên, cảm ơn tôi phải cung cấp tập lệnh cho những người dùng không muốn cài đặt xsh / perl để tìm kiếm tùy chọn sử dụng bash đơn giản hơn
shuklaa02

0

Sử dụng GNU sed:

sed -r 's/.*identifier="([a-zA-Z]+)".*/\1/'

HOẶC LÀ

sed -r 's/.*identifier="([^"]+)".*/\1/'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.