Với grep
, tôi muốn chọn tất cả các dòng khớp với một mẫu và không khớp với mẫu khác. Tôi muốn có thể sử dụng một lệnh gọi duy nhất grep
để tôi có thể sử dụng --after-context
tùy chọn (hoặc --before-context
, hoặc --context
).
-v
không khả thi ở đây, vì nó phủ nhận tất cả các mẫu tôi chuyển sang grep
sử dụng -e
tùy chọn.
Thí dụ
Tôi muốn tìm kiếm các dòng khớp needle
, bỏ qua các dòng khớp ignore me
, với một dòng của bối cảnh sau.
Đây là tập tin đầu vào của tôi:
one needle ignore me
two
three
four needle
five
Đầu ra tôi muốn là:
four needle
five
Như bạn có thể thấy, giải pháp ngây thơ này không hoạt động:
$ cat file | grep --after-context=1 needle | grep -v 'ignore me'
two
---
four needle
five
ack