Liên hệProfile
Danh mục

Mục Lục

    Lệnh grep là gì? Tìm hiểu tổng quan về lệnh grep trong Linux

    Nguyễn Hưng

    Ngày đăng:

    24/02/2026

    Cập nhật lần cuối:

    24/02/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    24/02/2026

    Cập nhật lần cuối:

    24/02/2026

    Mục lục

    grep là lệnh trên Linux/Unix dùng để tìm kiếm và hiển thị các dòng trong file văn bản chứa chuỗi ký tự hoặc biểu thức chính quy mà bạn chỉ định. Công cụ này hỗ trợ lọc thông tin nhanh chóng, chính xác trong các file hoặc thư mục lớn. Trong bài viết này, mình sẽ cùng bạn tìm hiểu tổng quan về lệnh grep và hướng dẫn cách tìm kiếm đệ quy với grep đơn giản, nhanh chóng.

    Những điểm chính

    • Định nghĩa grep: Hiểu rõ khái niệm, cú pháp cơ bản và các tùy chọn quan trọng của grep để tìm kiếm và lọc dữ liệu văn bản một cách hiệu quả.
    • Cách tùy chọn của grep: Nắm được các tùy chọn liên quan đến mẫu tìm kiếm và hiển thị của grep.
    • Hướng dẫn tìm kiếm đệ quy với grep: Nắm vững cách tìm kiếm đệ quy trong các thư mục và thư mục con (-r, -R), giúp bạn nhanh chóng định vị thông tin trong toàn bộ dự án.
    • Các ứng dụng thực tế của grep: Biết cách kết hợp grep với các lệnh khác qua pipeline (|) để giải quyết các bài toán quản trị hệ thống thực tế như kiểm tra trạng thái dịch vụ đang chạy.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề nâng cao như kết hợp nhiều mẫu tìm kiếm, xử lý file lớn và cách tối ưu hiệu suất khi tìm kiếm.

    Grep là gì?

    Lệnh grep (viết tắt của “Global Regular Expression Print”) là công cụ được thiết kế để tìm kiếm các dòng chứa một chuỗi ký tự hoặc biểu thức chính quy trong các file văn bản trong Linux/Unix. Khi sử dụng, bạn có thể chỉ định một hoặc nhiều file, kết hợp với đường dẫn thư mục hoặc kết quả từ lệnh khác thông qua pipeline (|). Tính năng này hữu ích khi bạn cần tra cứu thông tin trong một số lượng lớn tệp hoặc thư mục mà không cần mở từng tệp thủ công.

    grep là lệnh được dùng để tìm kiếm các dòng chứa một chuỗi ký tự hoặc biểu thức chính quy trong các file văn bản trong Linux/Unix.
    grep được dùng để tìm kiếm các dòng chứa chuỗi ký tự hoặc biểu thức chính quy trong các file văn bản trong Linux/Unix.

    Khi thực hiện lệnh grep, hệ thống sẽ rà soát từng dòng của file hoặc nhóm file và hiển thị những dòng có chứa chuỗi hoặc mẫu bạn yêu cầu. Ngoài thao tác cơ bản, grep hỗ trợ nhiều tùy chọn nâng cao như tìm kiếm không phân biệt hoa thường, tìm kiếm đệ quy cả thư mục con, hoặc lọc kết quả thông qua biểu thức chính quy.

    Cú pháp thực thi lệnh grep như sau:

    grep [tùy chọn] 'chuỗi_cần_tìm' tên_file

    Các tùy chọn phổ biến của lệnh grep

    Các tùy chọn liên quan đến mẫu tìm kiếm:

    Tùy chọnChức năng
    -e patternChỉ định mẫu để tìm kiếm, phù hợp khi dùng nhiều mẫu.
    -GDiễn giải mẫu theo biểu thức chính quy cơ bản.
    -ESử dụng cú pháp biểu thức chính quy mở rộng.
    -PSử dụng cú pháp biểu thức chính quy tương thích Perl (PCRE).
    -f fileLấy các mẫu tìm kiếm từ một file được chỉ định.
    -iTìm kiếm không phân biệt chữ hoa, chữ thường.
    -wChỉ tìm kiếm các từ khớp hoàn toàn với mẫu.

    Tùy chọn liên quan đến hiển thị:

    Tùy chọnChức năng
    -vHiển thị các dòng không khớp với mẫu.
    -sKhông hiển thị thông báo lỗi.
    -qChế độ yên lặng, không xuất ra bất kỳ kết quả nào.
    -LChỉ liệt kê tên các file không chứa mẫu tìm kiếm.
    -lChỉ liệt kê tên các file có chứa mẫu tìm kiếm.
    -cĐếm và hiển thị số dòng khớp với mẫu thay vì hiển thị nội dung.
    -m numDừng tìm kiếm sau khi tìm thấy num dòng khớp.
    -oChỉ hiển thị phần nội dung khớp với mẫu, mỗi kết quả trên một dòng mới.
    -nHiển thị số thứ tự của dòng trước mỗi dòng kết quả.
    -bHiển thị vị trí (byte offset) của kết quả trong file.
    -HLuôn hiển thị tên file trước mỗi kết quả.
    -hKhông hiển thị tên file trong kết quả (ngược lại với -H).
    –colorTô màu cho nội dung khớp với mẫu để dễ nhận biết.
    -B numHiển thị num dòng văn bản nằm trước dòng kết quả.
    -A numHiển thị num dòng văn bản nằm sau dòng kết quả.
    -C numHiển thị num dòng văn bản trước và sau dòng kết quả.

    Trong quản trị hệ thống Linux, khi cần tìm kiếm một chuỗi ký tự nằm rải rác trong nhiều tầng thư mục con khác nhau, việc sử dụng grep với tùy chọn đệ quy là giải pháp tối ưu nhất.

    Giả sử, bạn có một cấu trúc thư mục phân cấp gồm folder1, folder2, folder3, bên trong chứa các file văn bản (text1.txt, text2.txt,…) với nội dung ngẫu nhiên để thực hành.

    Cấu trúc thư mục phân cấp
    Cấu trúc thư mục phân cấp

    Phân biệt hai tùy chọn đệ quy: -r và -R

    Để kích hoạt tính năng tìm kiếm đệ quy, grep cung cấp hai tham số chính với sự khác biệt nằm ở cách xử lý Symbolic Link:

    • Tham số -r: Tìm kiếm đệ quy trong thư mục nhưng sẽ bỏ qua các Symbolic Link trỏ đến thư mục khác.
    • Tham số -R: Tìm kiếm đệ quy và truy vết theo tất cả các Symbolic Link để đọc nội dung đích.

    iconLưu ý

    Bạn cần cẩn trọng khi dùng -R vì có thể gây lặp vô hạn nếu các link trỏ vòng tròn.

    Các trường hợp ứng dụng lệnh grep thực tế

    Trường hợp 1: Tìm kiếm trong thư mục hiện hành

    Nếu bạn không chỉ định đường dẫn cụ thể, grep sẽ mặc định quét từ vị trí bạn đang đứng và đi sâu vào các thư mục con.

    grep -R "Vietnix" 

    Hệ thống sẽ liệt kê tất cả các dòng chứa từ khóa “Vietnix” kèm theo đường dẫn file tương ứng trong toàn bộ cây thư mục hiện tại:

    Kết quả sẽ liệt kê tất cả các dòng chứa từ khóa "Vietnix"
    Kết quả sẽ liệt kê tất cả các dòng chứa từ khóa “Vietnix”

    Trường hợp 2: Tìm kiếm trong một thư mục chỉ định

    Để giới hạn phạm vi tìm kiếm trong một thư mục cụ thể (ví dụ: folder1) mà không cần phải cd vào đó, bạn thực hiện cú pháp lệnh như sau:

    grep -R "Vietnix" folder1

    Kết quả hiện ra sẽ chỉ hiển thị các kết quả tìm thấy nằm bên trong folder1 và các thư mục con:

    Kết quả tìm kiếm trong một thư mục chỉ định
    Kết quả tìm kiếm trong một thư mục chỉ định

    Trường hợp 3: Tìm kiếm đệ quy không phân biệt hoa thường

    Để đảm bảo không bỏ sót dữ liệu do sự khác biệt về chữ viết hoa/thường, ví dụ như: “Vietnix”, “VIETNIX”, “vietnix”, bạn hãy kết hợp thêm tham số -i.

    grep -Ri "vIETniX"

    Lệnh sẽ trả về tất cả các biến thể của từ khóa bất kể định dạng ký tự:

    Kết quả trả về các biến thể của từ khóa bất kể định dạng ký tự:
    Kết quả trả về các biến thể của từ khóa bất kể định dạng ký tự

    Các ứng dụng thực thế của grep trong quản trị hệ thống

    Sức mạnh của lệnh grep được phát huy rõ nét khi được kết hợp với các lệnh khác trong chuỗi lệnh (pipeline) thông qua ký tự pipe (|). Cơ chế này cho phép grep vận hành như một bộ lọc chuyên dụng, xử lý và tinh lọc đầu ra của một lệnh trước khi hiển thị cho người dùng hoặc chuyển tiếp tiếp tục cho lệnh kế tiếp trong chuỗi.

    Một trong những ứng dụng thực tế phổ biến và hữu ích nhất là kiểm tra xem một chương trình hoặc dịch vụ cụ thể có đang chạy trên hệ thống hay không. Điều này được thực hiện bằng cách kết hợp lệnh ps để liệt kê các tiến trình đang chạy với grep.

    Ví dụ: Để kiểm tra xem dịch vụ web server tomcat có đang hoạt động hay không, bạn có thể chạy lệnh sau:

    ps aux | grep tomcat
    • ps aux: Lệnh này liệt kê tất cả các tiến trình đang chạy trên hệ thống.
    • |: Ký tự pipe, lấy toàn bộ đầu ra của lệnh ps aux và chuyển làm đầu vào cho lệnh grep.
    • grep tomcat: Lệnh grep sẽ lọc qua đầu vào đó và chỉ hiển thị những dòng có chứa chuỗi “tomcat”.

    Kết quả trả về sẽ cho bạn biết thông tin chi tiết về tomcat nếu tiến trình đang chạy, bao gồm cả ID tiến trình (PID), giúp bạn dễ dàng thực hiện các thao tác quản lý khác như dừng hoặc khởi động lại dịch vụ.

    grep được ứng dụng phổ biến trong quản trị hệ thống
    grep được ứng dụng phổ biến trong quản trị hệ thống (nguồn: Internet)

    Câu hỏi thường gặp

    Làm sao để kết hợp nhiều mẫu tìm kiếm phức tạp trong một lệnh grep duy nhất?

    Bạn có thể dùng tùy chọn -e nhiều lần hoặc sử dụng biểu thức chính quy mở rộng với -E.

    Grep xử lý tốt nhất với những định dạng file nào, có cần lưu ý gì khi lọc dữ liệu lớn không?

    Grep hoạt động tốt nhất với các file văn bản dạng thô. Khi lọc dữ liệu lớn, nên dùng thêm các tùy chọn như –color, -n hoặc chuyển hướng đầu ra qua less/more để dễ theo dõi. Đối với file nhị phân hoặc mã hóa đặc biệt, bạn nên kiểm tra kỹ encoding trước khi grep.

    Khi grep phải xử lý các file dung lượng lớn , làm thế nào để giảm tải tài nguyên và tăng tốc tìm kiếm?

    Bạn nên kết hợp với lệnh head, tail, hoặc lọc bớt kết quả với -m (giới hạn số dòng) hoặc chỉ grep vào những file thực sự cần thiết thay vì toàn bộ thư mục, giúp giảm áp lực lên CPU và bộ nhớ:
    grep -m 10 “error” largefile.log
    Lệnh này chỉ lấy 10 dòng đầu tiên khớp với mẫu “error”, giúp quá trình xử lý nhanh chóng hơn.

    Với khả năng lọc thông tin nhanh chóng, chính xác, grep đặc biệt hữu ích khi thao tác trên tập dữ liệu lớn hoặc trong môi trường quản trị hệ thống phức tạp. Bên cạnh đó, việc kết hợp grep với các lệnh khác qua pipeline giúp tăng hiệu quả xử lý, đồng thời đa dạng hoá các kịch bản ứng dụng thực tế. Mời bạn tham khảo thêm các kiến thức và lệnh hữu ích khác trong Linux qua các bài với dưới đây của mình:

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách dùng dmidecode trên Linux để xem thông tin phần cứng chính xác và nhanh chóng
    Cách dùng dmidecode trên Linux để xem thông tin phần cứng chính xác và nhanh chóng

    dmidecode là một công cụ dòng lệnh trên Linux dùng để đọc và hiển thị thông tin phần cứng máy tính từ bảng DMI hoặc SMBIOS cung cấp bởi BIOS, giúp kiểm tra chi tiết như nhà sản xuất, model, số serial, BIOS, CPU, RAM mà không cần mở máy. Trong bài viết này, mình…

    27/02/2026

    Lệnh partx Linux là gì? 7 ví dụ ứng dụng thực tế của lệnh partx
    Lệnh partx Linux là gì? 7 ví dụ ứng dụng thực tế của lệnh partx

    Lệnh partx Linux là một công cụ dòng lệnh thuộc gói util-linux, được sử dụng để thêm, xóa hoặc liệt kê các phân vùng của thiết bị đĩa vào bảng phân vùng của hệ thống mà không cần khởi động lại hoặc gắn lại thiết bị. Trong bài viết này, mình sẽ hướng dẫn bạn…

    27/02/2026

    Hướng dẫn 7 cách kiểm tra CPU trên Linux chính xác và nhanh chóng
    Hướng dẫn 7 cách kiểm tra CPU trên Linux chính xác và nhanh chóng

    Trong môi trường quản trị Linux, việc kiểm tra tốc độ xung nhịp CPU là một thao tác cần thiết giúp người dùng đánh giá khả năng chịu tải, phát hiện các điểm nghẽn hiệu suất  và hỗ trợ tối ưu trong quá trình tối ưu hóa hoặc khắc phục sự cố phần cứng. Trong…

    27/02/2026

    Hướng dẫn xóa bộ nhớ Cache, bộ đệm và Swap trong Linux nhanh chóng, chi tiết
    Hướng dẫn xóa bộ nhớ Cache, bộ đệm và Swap trong Linux nhanh chóng, chi tiết

    Trong Linux, bộ nhớ cache là nơi lưu trữ tạm thời dữ liệu và các file đã truy cập gần đây để giảm thời gian truy xuất ở lần tiếp theo. Tuy nhiên, theo thời gian, bộ nhớ cache có thể chiếm dụng quá nhiều RAM, đặc biệt trên các máy chủ có uptime dài…

    27/02/2026

    linux

    lenh

    text