Phân biệt GREP, EGREP và FGREP trong Linux

Linux/Unix đã trở thành hệ điều hành phổ biến và mạnh mẽ trong việc xử lý và tìm kiếm văn bản. Để hỗ trợ công việc tìm kiếm, các lệnh grep, egrep và fgrep được sử dụng rộng rãi. Trong bài viết, chúng ta sẽ phân biệt sự khác nhau giữa 3 lệnh grep, egrep và fgrep và đưa ra cách áp dụng hiệu quả để tìm kiếm văn bản trên Linux/Unix.

I. Grep

Lệnh grep được sử dụng để tìm kiếm các chuỗi văn bản trong các tệp hoặc đầu ra của các lệnh khác. Bạn chỉ cần chỉ định một biểu thức chính quy thông thường để tìm kiếm các chuỗi tương ứng.

Ví dụ, để tìm kiếm từ "tukhoa" trong tệp "ten_tep.txt", bạn sử dụng câu lệnh:

grep "tukhoa" ten_tep.txt

>> Xem thêm: 11 ví dụ lệnh Grep nâng cao trên CentOS / Ubuntu / Debian / Fedora

Các ký tự đặc biệt trong lệnh grep:

Các ký tự đặc biệt trong lệnh grep là công cụ hữu ích giúp bạn xây dựng các biểu thức chính quy phức tạp để tìm kiếm các chuỗi văn bản theo các quy tắc cụ thể.

  • . (dấu chấm): so khớp với bất kỳ ký tự nào, trừ ký tự xuống dòng.
  • * (dấu sao): so khớp với 0 hoặc nhiều lần xuất hiện của ký tự trước nó. Ví dụ, biểu thức "abc*" sẽ so khớp với "ab", "abc", "abcc", "abccc", v.v.
  • + (dấu cộng): so khớp với ít nhất một lần xuất hiện của ký tự trước nó. Ví dụ, biểu thức "abc+" sẽ so khớp với "abc", "abcc", "abccc", v.v.
  • ? (dấu hỏi): so khớp với 0 hoặc 1 lần xuất hiện của ký tự trước nó. Ví dụ, biểu thức "abc?" sẽ so khớp với "ab", "abc".
  • | (dấu gạch đứng): tạo các mẫu tương đương với "hoặc". Ví dụ, biểu thức "abc|xyz" sẽ so khớp với "abc" hoặc "xyz".
  • [] (ngoặc vuông): chỉ định một tập hợp các ký tự có thể khớp. Ví dụ, biểu thức "[abc]" sẽ so khớp với "a", "b" hoặc "c".
  • [^] (ký tự "^" nằm trong ngoặc vuông): chỉ định một tập hợp các ký tự không khớp. Ví dụ, biểu thức "[^abc]" sẽ so khớp với bất kỳ ký tự nào trừ "a", "b" hoặc "c".
  • () (ngoặc đơn): tạo nhóm trong biểu thức chính quy. Ví dụ, biểu thức "(abc)+" sẽ so khớp với "abc", "abcabc", "abcabcabc", v.v.

Ưu điểm và hạn chế của grep:

Lệnh grep đơn giản và mạnh mẽ, tuy nhiên, nó không hỗ trợ các biểu thức chính quy phức tạp và không cho phép bạn tìm kiếm các chuỗi cụ thể mà không sử dụng biểu thức chính quy.

II. Egrep (grep -E)

Điểm nổi bật của egrep so với grep:

Egrep, còn gọi là grep -E, cung cấp sự mở rộng của grep bằng cách hỗ trợ biểu thức chính quy mở rộng (extended regular expression).

Bạn có thể sử dụng các ký tự đặc biệt như ?, +, {, } trong biểu thức chính quy để thể hiện số lần xuất hiện của một ký tự hoặc một nhóm ký tự. Điều này làm cho việc tìm kiếm và so khớp trở nên mạnh mẽ hơn và linh hoạt hơn.

Sử dụng biểu thức chính quy mở rộng (extended regular expression)

Ví dụ, để tìm kiếm các từ "tukhoa1" hoặc "tukhoa2" trong tệp "ten_tep.txt", bạn sử dụng câu lệnh:

egrep "tukhoa1|tukhoa2" ten_tep.txt

Trường hợp sử dụng phù hợp của egrep

Egrep là lựa chọn hợp lý khi bạn cần tìm kiếm các chuỗi với các quy tắc phức tạp hơn biểu thức chính quy thông thường. Tìm hiểu rõ hơn về cách sử dụng 20 ví dụ lệnh egrep trong CentOS / Ubuntu / Debian / Fedora qua 20 ví dụ của chúng tôi.

III. Fgrep (grep -F)

Lợi ích của fgrep trong tìm kiếm các chuỗi cụ thể

Fgrep, còn gọi là grep -F, được sử dụng để tìm kiếm các chuỗi cụ thể mà không sử dụng biểu thức chính quy.

Khi sử dụng fgrep, các ký tự đặc biệt trong chuỗi tìm kiếm được coi là các ký tự thông thường và không phải là các ký tự đặc biệt. Điều này giúp tăng hiệu suất tìm kiếm và làm cho việc tìm kiếm các chuỗi cụ thể trở nên nhanh chóng và dễ dàng hơn.

Không sử dụng biểu thức chính quy, giúp tăng hiệu suất tìm kiếm

Ví dụ, để tìm kiếm từ "chuoi_can_tim" trong tệp "ten_tep.txt", bạn sử dụng câu lệnh:

fgrep "chuoi_can_tim" ten_tep.txt

Trường hợp sử dụng phù hợp của egrep

fgrep là lựa chọn hợp lý khi bạn cần tìm kiếm các chuỗi cụ thể mà không cần quan tâm đến các ký tự đặc biệt. Chúng tôi đã thảo luận rõ trong 12 ví dụ chi tiết về các trường hợp sử dụng fgrep

IV. So sánh ba lệnh GREP, FGREP, EGREP và lựa chọn sử dụng

Điểm mạnh và yếu của mỗi lệnh

Lựa chọn phù hợp giữa grep, egrep và fgrep phụ thuộc vào yêu cầu cụ thể của công việc tìm kiếm. Nắm vững sự khác biệt giữa ba lệnh grep, fgep và egrep giúp bạn tối ưu hóa hiệu suất tìm kiếm và đạt được kết quả chính xác nhất.

Cách lựa chọn phù hợp trong từng trường hợp sử dụng

  • Trong trường hợp cần tìm kiếm các chuỗi phức tạp với biểu thức chính quy mở rộng, egrep là lựa chọn tốt nhất.
  • Còn nếu bạn chỉ cần tìm kiếm các chuỗi cụ thể mà không quan tâm đến các ký tự đặc biệt, fgrep là lựa chọn phù hợp.

Phân biệt sự khác biệt giữa grep, egrep và fgrep là một phần quan trọng trong việc tìm kiếm và xử lý văn bản trên Linux/Unix. Áp dụng hiệu quả ba lệnh này giúp bạn nhanh chóng và chính xác tìm kiếm các thông tin cần thiết trong các tệp và đầu ra của các lệnh khác trên hệ điều hành Linux/Unix.

Mọi người cũng tìm kiếm: egrep, grep -r, grep -v, grep grep, grep linux, fgrep, grep, grep -r linux, grep -n, grep -w.