Khi nào nên sử dụng egrep thay vì grep?


8

Bây giờ tôi đang chuẩn bị cho một đánh giá thiết bị đầu cuối Linux, tôi đã thử Google và thấy hầu hết các tài nguyên đều đề cập đến "grep" cơ bản hơn là "egrep" mạnh hơn - tốt nhất, đó là những gì giáo sư đã nói trong bài giảng.

Tôi luôn làm việc với các mẫu nhỏ để điều chỉnh hiệu suất là một điều quá xa vời.

Vì vậy, về cơ bản tôi muốn biết có bất kỳ lĩnh vực nào mà tôi phải chuyển sang egrep để làm điều đó theo cách tốt hơn không? Có an toàn để làm việc với "grep" cơ bản như bây giờ không? sẽ có những rủi ro tiềm ẩn?

Xin lỗi về kiến ​​thức hạn chế của tôi về các lệnh shell Linux, trang man trông giống như một mê cung đối với tôi và thật lòng tôi không dành nhiều thời gian để hiểu tất cả các tính năng mà cả hai lệnh cung cấp.

Câu trả lời:


10

egrep = grep -E

Từ http://www.opengroup.org/onlinepub/007908799/xcu/grep.html

"Khớp bằng cách sử dụng các biểu thức chính quy mở rộng. Xử lý từng mẫu được chỉ định là ERE, như được mô tả trong đặc tả XBD, Biểu thức chính quy mở rộng. Nếu bất kỳ mẫu ERE nào khớp với một dòng đầu vào, dòng sẽ được khớp. ERE null khớp với mọi dòng."

Vì vậy, với egrep bạn có thể sử dụng +, ?, | and ().


@omfgroflmao: đó có phải là sự khác biệt không? tốt, bây giờ tôi cảm thấy thoải mái khi chỉ tập trung vào các hướng dẫn "grep" mà không phải lo lắng về lệnh "egrep" :) Cảm ơn vì mẹo của bạn!

1
Cho dù bạn gọi nó egrephay grep -E, các biểu thức chính quy mở rộng thường làm cho các mẫu phức tạp ngắn hơn và do đó dễ đọc hơn bằng cách loại bỏ rất nhiều ``. Đó không phải là về hiệu suất, nhưng là một cách tốt hơn trong một số ý nghĩa.
Cascabel

5

egrep bị phản đối Sử dụng grep -E. Lưu ý rằng greptìm các mẫu chuỗi cho bạn. Nếu bạn muốn làm một cái gì đó cho chuỗi của bạn sau khi tìm thấy chúng, thì bạn phải chuyển sang một công cụ xử lý chuỗi như awk(hoặc shell). Các công cụ mà bạn ALOS nên xem xét là awk, như awkphát hiện chuỗi cho bạn cũng như nhiều như grepvà làm việc xử lý dành cho bạn nếu bạn cần. Nó có tất cả những điều grep / sed / etc làm trong một công cụ tiện dụng.


@ ghostdog74: ahhh, vì vậy egrep không nên sử dụng ... Tôi nghĩ đó là sự thay thế cho grep ... Cảm ơn vì tiền boa của bạn!

2
Chỉ để ghi lại, trên nhiều máy, bao gồm của tôi, egrep là một liên kết đến grep. Đó là, chúng thực sự là cùng một lệnh chính xác, nhưng hành xử khác nhau tùy thuộc vào cách bạn gọi chúng.
MJB
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.