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
  • Sự khác biệt giữa grep, egrep và fgrep
    • Lệnh Egrep
    • Lệnh fgrep
    • Kết luận

Một số Meta-Characters đặc biệt của Grep

  1. + – Tương đương với một hoặc nhiều lần xuất hiện của ký tự trước đó.
  2. ? – Điều này biểu thị gần như 1 lần lặp lại ký tự trước đó. Như: a? Sẽ phù hợp ‘a’ hoặc ‘aa’.
  3. ( – Bắt đầu biểu thức xen kẽ.
  4. ) – Kết thúc biểu cảm xen kẽ.
  5. | – Khớp một trong hai biểu thức được phân tách bằng ‘|’. Như: (a|b)cde sẽ phù hợp với ‘abcde’ hoặc ‘bbcde’.
  6. { – Ký tự meta này cho biết bắt đầu của chỉ định phạm vi. Như: a{2} diêm aa trong tập tin tức là một 2 lần.
  7. } – Ký tự meta này biểu thị mã định nghĩa kết thúc dải ô.

Một số khác biệt chính giữa grep, egrepfgrep 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à:

Egrep la gi

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
Egrep la gi
Ví dụ về lệnh Grep Linux

Giống như ở đây, khi lệnh được chạy mà không thoát ‘(‘ ‘)’‘|’ 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 Egrep

Egrep 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
Egrep la gi
Ví dụ về lệnh Linux egrep

Như đâ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 fgrep

Fgrep 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.

$ fgrep -C 0 '(f|g)ile' check_file $ fgrep -C 0 '(f|g)ile' check_file
Egrep la gi
Ví dụ về lệnh Linux fgrep

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 ! 😉

  • 11 lệnh nâng cao Linux ‘Grep’ trên các lớp ký tự và biểu thức dấu ngoặc
  • Top 12 ví dụ thiết thực về lệnh Grep trong Linux 
  • Cách tạo và sử dụng lệnh bí danh trong Linux