Câu hỏi SED: Làm thế nào tôi có thể in tất cả các dòng sau khi dụ đầu tiên của chuỗi bằng cách sử dụng Sed?


Tôi có một tệp có định dạng tương tự ...

16:28 asdfasdf
16:29 4398upte
16:30 34liuthr
16:31 34tertio

Làm thế nào tôi có thể sử dụng SED để in ra tất cả các dòng bao gồm và sau dòng với "16:30"?

Kết quả sẽ là ...

16:30 34liuthr
16:31 34tertio

Hiện tại, tôi đang sử dụng sed như sau, nhưng tôi phải tìm số dòng của dòng đầu tiên theo cách thủ công, ví dụ: "562697":

sed -n '562697,$p'

4
2018-03-06 22:42


gốc




Các câu trả lời:


Địa chỉ trong sed có thể là số dòng hoặc mẫu. Thử cái này:

sed -n '/16:30/,$p'

Nếu mẫu có chứa /, bạn có thể thoát nó bằng một \. Ví dụ: để tìm kiếm 16/30 thay vì 16:30, thử cái này:

sed -n '/16\/30/,$p'

7
2018-03-06 22:48



Nếu tôi cần tìm kiếm 16/30 thì sao? Tôi không chắc chắn làm thế nào để sửa đổi cú pháp trong trường hợp này. Cảm ơn! - barrrista
@barrrista Tôi đã chỉnh sửa câu trả lời của mình để hiển thị cách thoát khỏi ký tự bằng dấu gạch chéo ngược. Hi vọng điêu nay co ich. - Nicole Hamilton


Sử dụng cụm từ thông dụng trong địa chỉ:

sed -n '/^16:30/,$p'

hoặc là

sed '/^16:30/,$!d'

5
2018-03-06 22:47