Grep -v Nhật Bản có nghĩa là gì và làm gì?


17

Tôi đã tự hỏi những gì grep -v "grep"không và nó có nghĩa là gì?


8
Bạn có thể man grepđọc trang hướng dẫn tham khảo cho lệnh hoặc để biết thêm thông tin về các lệnh nhất định (bao gồm grep) bạn có thể info grep.... tức là. hệ thống của bạn có tài liệu thường rất tiện dụng.
guiverc

12
grep -v "grep"thường được sử dụng để tự lọc grep trong khi liệt kê các quy trình và thường bao gồm 3 đường ống, mặc dù có các phương pháp tốt hơn tất nhiên như pgrepcho phép ít "hệ thống ống nước" hơn. Xem unix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy

13
Nó làm điều đó. Tôi đang gọi rootkit của tôi grep.
Joshua

Thường được sử dụng trong một bối cảnh không có bảo đảm liên quan đến như ps aux | grep fubar | grep -v grepnơi fubarlà điều mà tôi đang phát triển, đã ngừng đáp ứng, và có id tôi muốn tìm vì vậy tôi có thể giết chết nó. Giả sử có hai trong số họ killalllà không phù hợp.
nigel 222

Câu trả lời:


69

grep -v "grep"lấy dòng đầu vào theo dòng và chỉ xuất ra những dòng grepkhông xuất hiện. Nếu không -v, nó sẽ sản lượng chỉ các dòng trong đó grep không xuất hiện. Xem man grepđể biết chi tiết.

Đối với các greptiện ích liên quan, nó không quan trọng rằng mô hình grepđược truyền cho nó như là một đối số giống như tên của nó. Nhưng trong hầu hết các trường hợp grep -v grepthực sự xuất hiện, điều này không phải là ngẫu nhiên.

grep -v grep(hoặc grep -v 'grep'hoặc grep -v "grep") thường xuất hiện ở phía bên phải của đường ống có phía bên trái là pslệnh. Đó có thể là nơi bạn đã thấy nó. Ví dụ: tôi có thể đang tìm kiếm các chương trình đang chạy có tên, đường dẫn hoặc đối số dòng lệnh cho thấy chúng có liên quan đến Xfce:

ek@Io:~$ ps x | grep xfce
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1    S+     0:00 grep --color=auto xfce

grepLệnh của tôi đã được hiển thị trong đầu ra, nhưng đó không phải là điều tôi đang tìm kiếm. Tôi đang tìm kiếm thông tin về các quy trình đã chạy khi tôi kiểm tra những gì đang chạy, không phải là quá trình chỉ chạy nỗ lực của tôi để kiểm tra những gì đang chạy.

Một cách phổ biến để loại bỏ sự phân tâm này là thêm một đường ống khác vào grep -v grep:

ek@Io:~$ ps x | grep xfce | grep -v grep
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd

grepmà không -Fcoi mẫu của nó là một biểu thức thông thường chứ không phải là một chuỗi cố định . Vì vậy, một cách tiếp cận khác là viết một biểu thức chính quy khớp chính xác xfcenhưng được viết khác nhau. Ví dụ:

ek@Io:~$ ps x | grep '[x]fce'
 2955 ?        Ssl    0:10 xfce4-power-manager
 2958 ?        S      0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd

Điều này hoạt động vì [x]là một lớp nhân vật phù hợp chính xác với chữ cái x.


Một thiếu sót của các phương thức phổ biến đó là chúng sẽ lọc ra các dòng có chứa grepngay cả khi chúng không phải là greplệnh bạn tự chạy. Chúng thậm chí có thể không phải là grepcác lệnh - chỉ là các lệnh có tên, đường dẫn hoặc đối số dòng lệnh chứa grep . Vì vậy, như Sergiy Kolodyazhnyy đã chỉ ra , thường thì cả hai cách này (cũng không phải cách tiếp cận nào khác liên quan đến đường ống đầu ra ps) thực sự lý tưởng và, như Nic Hartley đã đề cập , những cách khác thường sử dụng pgrep. Ví dụ:

ek@Io:~$ pgrep -af xfce
2955 xfce4-power-manager
2958 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
  • -a hiển thị dòng lệnh đầy đủ. Bỏ qua nó để chỉ hiển thị số ID quá trình.
  • -f tìm kiếm trong dòng lệnh đầy đủ. Bỏ qua nó để chỉ tìm kiếm tên.

10
Nó cũng có thể đáng được đề cập pgrepcho một giải pháp thay thế khác chops | grep
Vụ kiện của Quỹ Monica

8

grep --helpcho chúng tôi biết -vcờ nào:

-v, --invert-match        select non-matching lines

Bạn có thể sử dụng -vcờ để in đảo ngược trận đấu; nghĩa là, nó chỉ khớp với những dòng không chứa từ đã cho. Ví dụ: in tất cả các dòng không chứa thanh từ:

$ grep -v bar /path/to/file

( đọc thêm ... )

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.