2011-12-21 32 views
9
sed -i "/xxxxxxxxxxxx/r inc-sausage" git.html 
sed -i "/xxxxxxxxxxxx/d" git.html 

Đầu tiên tôi chèn nội dung của inc-xúc xích khi xxxxxxxxxxxx được tìm thấythay thế/mô hình thay thế với nội dung tập tin

Thứ hai tôi xóa xxxxxxxxxxxx

Cả hai lệnh thực hiện chính xác những gì tôi muốn. Nhưng làm thế nào tôi có thể kết hợp cả hai lệnh sed vào một lệnh duy nhất? tôi đã cố gắng

sed -i "s/xxxxxxxxxxxx/r inc-sauasge" git.html 

Trả lời

9

Để bắt đầu, bạn coould nối cả sed lệnh vào một dòng và tránh lặp lại chuỗi tìm kiếm, như thế này:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "//d" git.html 

Ngoài ra, nếu bạn muốn xóa xxxxxxxxxxxx chỉ và không những thứ khác phù hợp của nó, bạn có thể làm điều đó thay vì:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "s///" git.html 
3

điều này có thể làm việc cho bạn:

sed -i '/xxxxxxxxxxxx/{r inc-sausage'$'\n''d}' git.html 

Giải thích:

Xem here tại sao $'\n' là cần thiết. Cũng lưu ý rằng lệnh d phải là cuối cùng vì nó xóa không gian mẫu và sau đó bắt đầu ngay lập tức chu kỳ tiếp theo.

Hoặc cho GNU sed:

sed -i '/xxxxxxxxxxxx/s|.*|cat inc-sausage|e' git.html 
Các vấn đề liên quan