Cách để khớp chuỗi chính xác bằng lệnh grep trong Linux

Tác giả: VPS chính hãng 23 tháng 10, 2023

Trong Linux, lệnh “grep” được sử dụng để tìm kiếm hoặc khớp văn bản/mẫu trong tệp hoặc thư mục. Theo mặc định, grep thực hiện tìm kiếm phân biệt chữ hoa chữ thường và trả về bất kỳ dòng nào chứa mẫu tìm kiếm đã chỉ định. Nó có nhiều ứng dụng khác nhau để tìm ra các chuỗi, ký tự và từ cụ thể trong toàn bộ tệp. Bài viết này sẽ cung cấp cú pháp cùng với một số ví dụ để khớp các chuỗi chính xác bằng cách sử dụng lệnh “grep” trong Linux. Hãy cùng theo dõi!

Lệnh grep là gì?

Trong Linux grep là viết tắt của “global regular expression print”. Đây là một lệnh được sử dụng để tìm kiếm và khớp các tệp văn bản có trong các biểu thức chính quy. Hơn nữa, lệnh này được cài đặt sẵn trong mọi bản phân phối của máy chủ Linux/VPS Linux. Lệnh Grep có thể được sử dụng để tìm kiếm một biểu thức chính quy hoặc một chuỗi trong tệp văn bản. Đây là một trong những lệnh hữu ích nhất trên hệ thống Linux và Unix dành cho nhà phát triển và quản trị viên hệ thống. Trong Linux, hầu hết quản trị viên hệ thống sử dụng lệnh grep để tìm kiếm tên ứng dụng cụ thể trong tệp nhật ký nhằm ngăn chặn quá trình cài đặt.

Làm cách nào để cài đặt grep trong bản phân phối Linux?

Trong các phiên bản mới nhất của bản phân phối Linux, tiện ích dòng lệnh “grep” xuất hiện theo mặc định. Tuy nhiên, nếu nó không có sẵn trong bản phân phối tương ứng của bạn. Sau đó, bạn có thể cài đặt nó thông qua các lệnh sau:

Trên Debian/Ubuntu:

Từ trình quản lý gói, lệnh grep có thể được cài đặt trong hệ thống Debian/Ubuntu thông qua cú pháp bên dưới:

$ sudo apt install grep
Lệnh grep được cài đặt trên hệ thống Linux

Lệnh grep được cài đặt trên hệ thống Linux

Trên RHEL/CentOS/Fedora:

Để cài đặt lệnh grep trong hệ thống RHEL/CentOS/Fedora, hãy làm theo đoạn script dưới đây:

$ sudo yum install grep

=>> Lệnh nc -l hoạt động như thế nào trong Linux

Lệnh grep hoạt động như thế nào trong Linux?

Về cơ bản, hoạt động của lệnh grep dựa vào cú pháp của nó, được mô tả bên dưới:

$ grep <options> pattern [files]

Lệnh grep yêu cầu “pattern” có thể là từ, ký tự, số, dòng hoặc biểu thức thông thường. Ngoài ra, “files” chỉ định tên tệp ở định dạng “.txt”. Các tùy chọn phổ biến nhất được sử dụng với lệnh grep được liệt kê trong bảng như sau:

  • -l – Tùy chọn này hiển thị danh sách tên tập tin.
  • -h – Nó hiển thị dòng phù hợp.
  • -c – Tùy chọn đếm từ cụ thể.
  • -v – Nó hiển thị tất cả các dòng không khớp.
  • -w – Nó khớp với toàn bộ từ.

Để khám phá lệnh grep với tất cả các tùy chọn mở rộng, hãy thực thi lệnh “grep – help” như bên dưới:

$ grep --help
Khám phá tất cả các tùy chọn mở rộng của lệnh grep

Khám phá tất cả các tùy chọn mở rộng của lệnh grep

Lệnh grep hoạt động như thế nào để khớp chuỗi chính xác?

Để khớp chuỗi chính xác, hãy sử dụng lệnh grep với tùy chọn “-w” để buộc grep chỉ khớp toàn bộ các từ. Thực hiện theo cú pháp dưới đây cùng với các ví dụ thực tế:

$ grep -w "matching_string" <filename>

Trong cú pháp trên, thay thế “matching_string” bằng chuỗi mà người dùng muốn tìm kiếm và “filename” là tên của tệp cần tìm kiếm.

=>> Tùy chọn -f của lệnh tail hoạt động như thế nào?

Các ví dụ về sử dụng lệnh grep để khớp chuỗi trong Linux

Ví dụ 1: Chuỗi khớp chính xác trong một tệp được chỉ định

Một ví dụ được coi là tìm kiếm chuỗi chính xác trong một tệp. Để làm như vậy, lệnh “grep” được sử dụng với tùy chọn “w” bằng cách chỉ định chuỗi “vpschinhhang” trong “file.txt“:

$ grep -w "vpschinhhang" file.txt

Nó khớp với chuỗi chính xác “vpschinhhang” được tìm thấy trong “file.txt” và trả về các dòng chứa chuỗi cụ thể.

Lưu ý: Grep không trả về gì trong terminal nếu không tìm thấy chuỗi.

Ví dụ 2: Chuỗi khớp chính xác (tìm kiếm không phân biệt chữ hoa chữ thường)

Người dùng cũng có thể sử dụng lệnh “grep” với các tùy chọn khác để tinh chỉnh tìm kiếm của mình. Ví dụ: sử dụng tùy chọn “-i” để thực hiện tìm kiếm không phân biệt chữ hoa chữ thường trong “file.txt”:

$ grep -i "vpschinhhang" file.txt

Kết quả đầu ra cho thấy chuỗi “vpschinhhang” đã được khớp chính xác trong “file.txt” mà không có phân biệt chữ hoa chữ thường.

Ví dụ 3: Khớp nhiều chuỗi (tìm kiếm phân biệt chữ hoa chữ thường)

Để khớp nhiều chuỗi trong khi xem xét phân biệt chữ hoa chữ thường, hãy sử dụng lệnh “grep” với mẫu chuỗi và tên tệp được chỉ định. Trong trường hợp ví dụ này của chúng tôi, chúng tôi đã chỉ định “\” với “pipeline” để phân tách nhiều chuỗi nhằm tìm kiếm đúng:

$ grep 'vps\|vp' file.txt

Kết quả đầu ra cho thấy các chuỗi “vps” và “vp” đã được tìm kiếm trong “file.txt”.

Ví dụ 4: Chuỗi khớp chính xác trong toàn bộ thư mục

Để khớp chuỗi chính xác trong toàn bộ thư mục, người dùng có thể sử dụng lệnh “grep” với tùy chọn “r”. Trong trường hợp của chúng tôi, chúng tôi đã tìm kiếm chuỗi “vpschinhhang” trong thư mục chính:

$ grep -r vpschinhhang*

Nó tìm kiếm chuỗi “vpschinhhang” trong thư mục chính và các thư mục con của nó.

Trong Linux, lệnh grep làm nổi bật từ, ký tự hoặc chuỗi cụ thể sau khi tìm kiếm toàn bộ nội dung trong tệp. Lệnh này khớp với mẫu cụ thể do người dùng cung cấp. Các tùy chọn khác nhau được sử dụng với lệnh grep, bao gồm “-c” để đếm từ, “-w” để khớp toàn bộ từ, “-i” để bỏ qua trường hợp khớp,…

Để khớp chuỗi chính xác bằng lệnh “grep”, hãy sử dụng lệnh “grep -w “matching_string” <filename>”. Người dùng cũng có thể chỉ định một chuỗi hoặc nhiều chuỗi bằng cách phân tách thông qua đường dẫn “|”. Nó tìm thấy các mẫu đã chỉ định và trích xuất các dòng nơi các chuỗi khớp với nhau. Hy vọng bài viết này đã cung cấp các ví dụ hữu ích để giúp bạn khớp chuỗi chính xác bằng lệnh “grep” trong Linux. Chúc các bạn thành công!