2011-08-04 61 views

Trả lời

35
$ cat text 
abc 
    <!-- BOF CLEAN --> 
... a bunch of stuff 
    <!-- EOF CLEAN --> 
def 
$ sed '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' text 
abc 
def 

http://www.catonmat.net/blog/sed-one-liners-explained-part-three/

+0

SED xóa của tôi tập tin!! Tôi đã làm 'sed '/^0.*$/d' s1d13700.c' mà nhổ kết quả chính xác vào giao diện điều khiển, sau đó tôi đã làm' sed '/^0.*$/d' s1d13700.c> s1d13700.c' để ghi đè lên tệp gốc với kết quả và tệp kết thúc hoàn toàn trống! –

+6

@ Zom-B Điều gì xảy ra trong 'sed ... s1d13700.c> s1d13700.c' là shell đầu tiên tạo ra một tệp rỗng mới' s1d13700.c' trước khi chạy sed, do đó ghi đè lên tệp đầu vào của bạn có cùng tên. Sử dụng 'sed -i.original ... s1d13700.c' để thay đổi tệp tại chỗ và tạo bản sao lưu của tệp gốc dưới dạng' s1d13700.c.original'. –

3

Để loại bỏ tất cả các văn bản bắt đầu từ và bao gồm <!-- BOF CLEAN --> và kết thúc tại và kể cả <!-- EOF CLEAN -->, sử dụng sau lệnh sed:

sed -i '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' file_name; 

tham khảo: Delete text or paragraph between two sections using sed

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