grep - tại sao dấu ngoặc trong mẫu grep loại bỏ quá trình grep khỏi kết quả ps?


12

Tại sao dấu ngoặc trong một grepmẫu loại bỏ quá trình grep khỏi pskết quả?

$ ps -ef | grep XXXX

[...] XXXX
[...] grep XXXX


$ ps -ef | grep [X]XXX

[...] XXXX

2
Đây là một mẹo nhỏ tuyệt vời, ngay từ đầu!
Kevin Cantu

Câu trả lời thêm cho câu hỏi này được đưa ra ở đây unix.stackexchange.com/questions/78771/iêu
erch

Câu trả lời:


20

Khi bạn chạy ps -ef | grep string, grep được hiển thị trong đầu ra vì stringkhớp [...] grep string.

Nhưng, khi bạn chạy ps -ef | grep [s]tringdòng không được hiển thị, bởi vì grep dịch [s]tringsang string, trong khi đầu ra ps [...] grep [s]tringvà điều đó không khớpstring


1
... bởi vì []đại diện cho bất kỳ một trong số các ký tự trong dấu ngoặc, trong trường hợp này "s" là số duy nhất ...
Tạm dừng cho đến khi có thông báo mới.

vâng ... tôi thực sự gặp khó khăn khi cố gắng giải thích điều này bằng tiếng Anh ... đó không phải là ngôn ngữ đầu tiên của tôi :)
Stefan

2

Bởi vì dấu ngoặc cần phải được thoát, cho bash một lần và cho grep một lần nữa:

$ ps -ef | grep \\[X\\]XXX

[...] XXXX
[...] grep XXXX


$ ps -ef | grep "\[X\]XXX"

[...] XXXX
[...] grep XXXX
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.