2011-11-25 39 views
11

Chiều Thứ Sáu và bộ não của tôi đã bị đóng băng!Nhận văn bản bên trong thẻ xml bằng grep

grep -E -m 1 -o "<title>(.*)</title>" myfile.rss 

lợi nhuận

<title>Some title</title> 

Làm thế nào để chỉ nhận được Some title?

+1

Bash không có chức năng xây dựng-in để phân tích cú pháp XML. Bạn có thể xem xét sử dụng PHP, perl để phân tích cú pháp XML theo cách thích hợp. Sau đó nhận được giá trị nút sẽ dễ dàng – ajreal

+0

Không, đó là hoàn thành quá mức cần thiết cho nhiệm vụ! – tdc

+0

Đối với những gì tôi hiểu, chúng tôi chỉ muốn trích xuất nội dung tiêu đề từ xml bố cục đã biết, không phân tích cú pháp xml. Để phân tích cú pháp xml 'xmlstarlet' có thể là tiện ích hữu ích. –

Trả lời

21

ống nó hơn nữa thông qua, ví dụ

sed -e 's,.*<title>\([^<]*\)</title>.*,\1,g' 
+0

Cảm ơn! Brain rã đông ;-) – tdc

+0

+1, nhưng lưu ý rằng việc sử dụng 'sed' để phân tích cú pháp XML (hoặc HTML) thường không phải là một ý tưởng hay. Nó chỉ nên được thực hiện khi đầu vào được biết đến và không thay đổi bất ngờ. Đối với bất cứ điều gì slurped tự động từ internet một phân tích cú pháp thích hợp nên được sử dụng. – Sorpigal

+0

@Sorpigal, tôi đồng ý hoàn toàn, hãy xem nhận xét cho chính câu hỏi đó để biết chi tiết. –

Các vấn đề liên quan