Egrep la gi
Do các chức năng khác nhau, tiện ích grep có nhiều biến thể bao gồm grep, egrep (Extended GREP), fgrep (Fixed GREP), pgrep (Process GREP), rgrep (Recursive GREP),… Nhưng những biến thể này có những khác biệt nhỏ so với nguyên bản grep điều này đã làm cho chúng trở nên phổ biến và được các lập trình viên Linux khác nhau sử dụng cho các nhiệm vụ cụ thể. Cùng tìm hiểu sự khác biệt giữa Grep, Egrep và Fgrep trong Linux là gì nhé.
Một số Meta-Characters đặc biệt của Grep
Một số khác biệt chính giữa grep, egrep và fgrep có thể được đánh dấu như sau. Đối với tập hợp các ví dụ này, chúng tôi giả định rằng tệp mà hoạt động đang được thực hiện là: grep hoặc Global Regular Expression Print là chương trình tìm kiếm chính trên các hệ thống giống Unix có thể tìm kiếm bất kỳ loại chuỗi nào trên bất kỳ tệp hoặc danh sách tệp nào hoặc thậm chí đầu ra của bất kỳ lệnh nào. Nó sử dụng Basic Regular Expressions ngoài các chuỗi bình thường như một mẫu tìm kiếm. Trong Cụm từ Thông dụng Cơ bản (BRE), các ký tự meta như: ‘{‘,’}’,‘(‘,’)’,‘|’,‘+’,‘?’ mất nghĩa của chúng và được coi như các ký tự bình thường của chuỗi và cần phải được thoát nếu chúng được coi là các ký tự đặc biệt. Ngoài ra, grep sử dụng thuật toán Boyer-Moore để tìm kiếm nhanh bất kỳ chuỗi hoặc biểu thức chính quy nào. $ grep -C 0 '(f|g)ile' check_file $ grep -C 0 '(f|g)ile' check_file Ví dụ về lệnh Grep LinuxGiống như ở đây, khi lệnh được chạy mà không thoát ‘(‘ ‘)’ và ‘|’ sau đó nó tìm kiếm chuỗi hoàn chỉnh tức là (f|g)ile Trong tập tin. Nhưng khi các ký tự đặc biệt được thoát ra, sau đó thay vì coi chúng như một phần của chuỗi, grep đã coi chúng như các ký tự meta và tìm kiếm các từ file hoặc gile Trong tập tin. Lệnh EgrepEgrep hoặc grep -E là một phiên bản khác của Grep hoặc Grep mở rộng. Phiên bản grep này hiệu quả và nhanh chóng khi tìm kiếm một mẫu biểu thức chính quy vì nó xử lý các ký tự meta như hiện tại và không thay thế chúng thành các chuỗi như trong grep, và do đó bạn được giải phóng khỏi gánh nặng thoát khỏi chúng như trong grep. Nó sử dụng ERE hoặc bộ Biểu thức chính quy mở rộng. Trong trường hợp egrep, ngay cả khi bạn không thoát khỏi các ký tự meta, nó sẽ coi chúng là các ký tự đặc biệt và thay thế chúng theo ý nghĩa đặc biệt của chúng thay vì coi chúng như một phần của chuỗi. $ egrep -C 0 '(f|g)ile' check_file $ egrep -C 0 '(f|g)ile' check_file Ví dụ về lệnh Linux egrepNhư đây, egrep tìm kiếm file chuỗi khi các ký tự meta không được thoát vì nó có nghĩa là ý nghĩa của các ký tự này. Tuy nhiên, khi các ký tự này được thoát ra, thì egrep coi chúng như một phần của chuỗi và tìm kiếm chuỗi hoàn chỉnh (f|g)ile Trong tập tin. Lệnh fgrepFgrep hoặc là Fixed grep hoặc grep -F là một phiên bản khác của grep có khả năng tìm kiếm nhanh khi tìm kiếm toàn bộ chuỗi thay vì biểu thức chính quy vì nó không nhận ra các biểu thức chính quy, cũng không phải bất kỳ ký tự meta nào. Để tìm kiếm bất kỳ chuỗi trực tiếp nào, đây là phiên bản grep nên được chọn. Fgrep tìm kiếm chuỗi hoàn chỉnh và thậm chí không nhận ra các ký tự đặc biệt như một phần của biểu thức chính quy ngay cả khi thoát hoặc không thoát. Giống như, khi các ký tự meta không được thoát, fgrep đã tìm kiếm chuỗi hoàn chỉnh (f|g)ile trong tệp và khi các ký tự meta được thoát ra, thì lệnh fgrep tìm kiếm (f|g)ile tất cả các ký tự như trong tệp. Kết luậnỞ trên được đánh dấu là sự khác biệt giữa ‘grep’, ‘egrep’ và ‘fgrep’. Ngoài sự khác biệt trong tập hợp các biểu thức chính quy được sử dụng và tốc độ thực thi, các tham số dòng lệnh còn lại vẫn giữ nguyên cho cả ba phiên bản grep và thậm chí thay vì egrep hoặc fgrep, grep -E hoặc grep -F được khuyến khích sử dụng. Tới đây bạn đã hiểu hơn về sự khác biệt giữa Grep, Egrep và Fgrep trong Linux hay chưa? Nếu có bất kỳ thắc mắc về nội dung này hãy liên hệ ngay với tôi tại 2error.net nhé! Tôi luôn sẵn sàng giúp đỡ và đồng hành cùng bạn ! 😉
|