Tôi đang tìm kiếm tệp xml có các thuộc tính nhất định. Ví dụ, các file có chứa mẫu sau:Cách đơn giản nhất để thực hiện phân tích xml cơ bản từ dòng lệnh unix
<param-value>
<name>Hosts</name>
<description>some description</description>
<value></value>
</param-value>
cho tập tin như vậy, tôi muốn phân tích giá trị của thẻ khác, chẳng hạn như:
<param-value>
<name>Roles</name>
<description>some description</description>
<value>asdf</value>
</param-value>
Và in ra tên tập tin cùng với "asdf". Cách đơn giản nhất để thực hiện điều này từ dòng lệnh là gì?
Một cách tiếp cận mà tôi đã nghĩ đến là chỉ sử dụng grep với tùy chọn -l để lọc các tệp phù hợp, sau đó sử dụng xargs grep để trích xuất giá trị của Vai trò. Tuy nhiên, grep không hoạt động tốt với nhiều dòng regex. Tôi thấy một câu hỏi khác cho thấy nó có thể được thực hiện với các tùy chọn -Pzo, nhưng không có bất kỳ may mắn nhận được nó để làm việc trong trường hợp của tôi. Có cách tiếp cận đơn giản hơn không?
Có bất kỳ lý do đặc biệt mà bạn không muốn sử dụng một ngôn ngữ kịch bản như perl? – Tom
Không, giải pháp perl sẽ tuyệt vời, tốt nhất là một lớp lót nhỏ gọn, nhưng tôi không biết cách tốt nhất để viết về nó. – jonderry
Sẽ rất hữu ích khi có một giải pháp chỉ chạy với các công cụ cơ bản nhất, xmlstarlet, xpath và mô-đun xpath của perl không được cài đặt trên hệ thống mà tôi sẽ thực hiện tìm kiếm. – jonderry