Tôi có văn bản sau trong File.XML:
<http-listener name="default" socket-binding="http" max-post-size="1073741824" />
Tôi muốn thay thế bằng
<!-- <http-listener name="default" socket-binding="http" max-post-size="1073741824" /> -->>
Tôi đã thử
sed -i 's/<http-listener name="default" socket-binding="http" max-post-size="1073741824" /><!-- <http-listener name="default" socket-binding="http" max-post-size="1073741824" /> -->>' test.xml
Nhưng có lỗi
Chèn đoạn cần thiết (<!--
) lúc bắt đầu (^
):
sed 's/^/<!-- /'
Thí dụ:
% var='<http-listener name="default" socket-binding="http" max-post-size="1073741824" />'
% sed 's/^/<!-- /' <<<"$var"
<!-- <http-listener name="default" socket-binding="http" max-post-size="1073741824" />
Chỉ cần lưu ý, để phân tích cú pháp dữ liệu có cấu trúc như xml
, bạn nên sử dụng công cụ hiểu cấu trúc, ví dụ: xmlstarlet
.
Trả lời câu hỏi đã chỉnh sửa:
Bạn có thể kết hợp chuỗi con chính xác ở đầu và cuối, khi sử dụng thay thế \0
để tham khảo toàn bộ trận đấu đưa các chất nền thay thế mong muốn xung quanh:
sed 's/^<http-listener name="default".*>$/<!-- \0 -->>/'
Thí dụ:
% var='<http-listener name="default" socket-binding="http" max-post-size="1073741824" />'
% sed 's/^<http-listener name="default".*>$/<!-- \0 -->>/' <<<"$var"
<!-- <http-listener name="default" socket-binding="http" max-post-size="1073741824" /> -->>