grep - ทำไมเครื่องหมายวงเล็บในรูปแบบ grep จึงลบกระบวนการ grep ออกจากผลลัพธ์ ps


12

ทำไมวงเล็บในgrepรูปแบบจึงลบกระบวนการ grep ออกจากpsผลลัพธ์

$ ps -ef | grep XXXX

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


$ ps -ef | grep [X]XXX

[...] XXXX

2
นี่เป็นเคล็ดลับเล็ก ๆ น้อย ๆ ในตอนแรก!
Kevin Cantu

คำตอบเพิ่มเติมสำหรับคำถามนี้มีให้ที่นี่ unix.stackexchange.com/questions/78771/…
erch

คำตอบ:


20

เมื่อคุณเรียกใช้ps -ef | grep string, grep จะปรากฏขึ้นในการส่งออกเนื่องจากการแข่งขันstring[...] grep string

แต่เมื่อคุณรันps -ef | grep [s]tringบรรทัดนั้นจะไม่ปรากฏขึ้นเนื่องจาก grep แปล[s]tringเป็นstringในขณะที่เอาต์พุต ps [...] grep [s]tringและนั่นไม่ตรงกันstring


1
... เพราะ[]หมายถึงหนึ่งในชุดของอักขระใด ๆ ภายในวงเล็บซึ่งในกรณีนี้ "s" เป็นเพียงหนึ่ง ...
หยุดชั่วคราวจนกว่าจะมีประกาศ

อือ ... ผมมีปัญหาในการพยายามที่จะอธิบายในภาษาอังกฤษนี้ ... มันไม่ได้ภาษาแรกของฉัน :)
สเตฟาน

2

เพราะวงเล็บจะต้องหลบหนีเพื่อทุบตีครั้งเดียวและสำหรับ grep อีกครั้ง:

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

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


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

[...] XXXX
[...] grep XXXX
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.