Nội dung bài viết
#

Grep là gì? Cách sử dụng lệnh grep trong Linux/UNIX

Nội dung bài viết

    su dung lenh grep tron glinux

    Trong bài viết này BKHOST sẽ cùng bạn tìm hiểu các thông tin chi tiết liên quan đến các lệnh grep trong hệ thống Linux/ Unix.

    Mục đích của bài viết là giúp bạn học được cách sử dụng lệnh grep để tìm kiếm tệp cho văn bản từ thiết bị đầu cuối thông qua các ví dụ.

    Điều kiện tiên quyết

    • Hệ thống giống Linux hoặc UNIX
    • Truy cập vào terminal/dòng lệnh
    • Người dùng có quyền truy cập các tệp và thư mục mong muốn

    Lưu ý: Một dòng trên thiết bị đầu cuối không giống với một dòng trong văn bản bình thường. Một dòng ở đây là một chuỗi các ký tự cho đến khi ngắt dòng. Đầu ra của lệnh grep có thể chứa toàn bộ văn bản nếu không có tùy chọn tìm kiếm để chỉnh nội dung đầu ra mong muốn.

    Lệnh grep là gì?

    grep la gi

    Grep được viết tắt từ Global Regular Expression Print.

    Grep là một công cụ dòng lệnh Linux/Unix được sử dụng để tìm kiếm một chuỗi ký tự trong một tệp được chỉ định. Mẫu tìm kiếm văn bản được gọi là biểu thức chính quy. Khi tìm thấy một kết quả phù hợp, nó sẽ in dòng kèm theo kết quả. Lệnh grep rất tiện dụng khi tìm kiếm qua các tệp nhật ký lớn.

    Cách sử dụng lệnh grep

    Dạng cơ bản của lệnh grep được cấu tạo từ ba phần bao gồm: Phần đầu tiên bắt đầu với grep, tiếp theo là mẫu mà bạn đang tìm kiếm, cuối cùng là tên tệp mà grep tìm kiếm.

    Cú pháp lệnh grep có cấu trúc đơn giản như sau:

    Cach su dung lenh grep

    Nếu bạn muốn kết quả trả ra linh hoạt theo nhu cầu của mình, bạn có thể kết hợp với các tùy chọn khác nhau cũng như có thể chứa nhiều biến thể mẫu và tên tệp.

    Sau đây là các ví dụ về lệnh grep được sử dụng phổ biến nhất hiện nay:

    Lưu ý: Lệnh grep phân biệt chữ hoa chữ thường. Đảm bảo sử dụng đúng trường hợp khi chạy các lệnh grep.

    1. Để tìm kiếm tệp

    Để in bất kỳ dòng nào từ tệp có chứa một mẫu ký tự cụ thể, trong trường hợp này là từ Phoenix trong tệp sample2, lệnh chạy có cấu trúc như sau:

    {{EJS0}}

    Grep sẽ hiển thị các dòng có từ trùng khớp với từ Phoenix. Khi thực hiện lệnh này, bạn không nhận được kết quả phù hợp chính xác. Thay vào đó, thiết bị đầu cuối in các dòng có các từ chứa chuỗi ký tự bạn đã nhập. Đây là một ví dụ:

    grep tim kiem tep

    Mẹo: Nếu mẫu tìm kiếm của bạn bao gồm các ký tự không phải là chữ và số, hãy sử dụng dấu ngoặc kép. Có thể bao gồm các khoảng trống hoặc bất kỳ ký hiệu nào.

    2. Để tìm kiếm nhiều tệp

    Để tìm kiếm nhiều tệp bằng lệnh grep, hãy điền tên các tệp bạn muốn tìm kiếm, giữ các tệp được phân cách bằng khoảng trắng.

    Ví dụ sau đây là sử dụng lệnh grep để tìm từ Phoenix trong ba tệp sample, sample2 và sample3, nó được thể hiện ở ví dụ sau:

    {{EJS1}}

    Thiết bị đầu cuối in ra tên của các tệp chứa các dòng phù hợp và các dòng thực bao gồm chuỗi ký tự bắt buộc.

    tim kiem nhieu tep

    Bạn có thể nối với lượng tệp không giới hạn. Thiết bị đầu cuối in một dòng mới với tên tệp cho mọi kết quả khớp mà nó tìm thấy trong các tệp được liệt kê.

    Mẹo: Tham khảo bài viết về Lệnh Xargs để tìm hiểu cách sử dụng xargs với grep giúp tìm kiếm một chuỗi trong danh sách tệp.

    3. Tìm kiếm tất cả các tệp trong thư mục

    Để tìm kiếm tất cả các tệp trong thư mục hiện tại, hãy sử dụng dấu “*” thay vì tên tệp ở cuối lệnh grep.

    Trong ví dụ này, nix được sử dụng để làm tiêu chí tìm kiếm:

    {{EJS2}}

    Đầu ra hiển thị tên của tệp bằng nix và trả về toàn bộ dòng.

    4. Để chỉ tìm toàn bộ các từ

    Grep chỉ cho phép bạn tìm và in kết quả cho toàn bộ từ. Để tìm kiếm từ Phoenix ở tất cả các tệp trong thư mục hiện tại, hãy thêm -w vào lệnh grep.

    {{EJS3}}

    Tùy chọn này chỉ in các dòng có kết quả khớp toàn bộ từ và tên của các tệp mà nó tìm thấy trong thư mục:

    grep tim toan bo cac tu

    Khi bỏ -w, grep sẽ hiển thị mẫu tìm kiếm ngay cả khi một từ khác chứa các chuỗi con mà bạn cần tìm kiếm.

    Nếu bạn muốn tìm kiếm nhiều chuỗi và mẫu từ, hãy xem bài viết về cách chuyển đổi từ để tìm nhiều chuỗi, mẫu hoặc từ.

    5. Để bỏ qua trường hợp trong tìm kiếm Grep

    Vì các lệnh grep phân biệt chữ hoa chữ thường, một trong những toán tử hữu ích nhất cho tìm kiếm grep là -i. Thay vì chỉ in kết quả bằng chữ thường, thiết bị đầu cuối hiển thị cả kết quả viết hoa và viết thường. Đầu ra bao gồm các dòng có các mục nhập chữ hoa và chữ thường hỗn hợp.

    Ví dụ về lệnh này:

    {{EJS4}}

    Nếu chúng ta sử dụng toán tử -i để tìm kiếm các tệp trong thư mục hiện tại cho Phoenix, kết quả sẽ giống như sau:

    6. Để tìm kiếm thư mục con

    Để bao gồm tất cả các thư mục con trong kết quả tìm kiếm được trả về, hãy sử dụng toán tử -r vào lệnh grep.

    {{EJS5}}

    grep tim kiem thu muc con

    Lệnh này in các kết quả phù hợp cho tất cả các tệp trong thư mục hiện tại, thư mục con và đường dẫn chính xác với tên tệp. Trong ví dụ trên, có bổ sung thêm toán tử -w để hiển thị toàn bộ các từ, tuy nhiên kết quả đầu ra vẫn tương tự nhau:

    7. Tìm kiếm grep ngược

    Bạn có thể sử dụng grep để in tất cả các dòng không khớp với một mẫu ký tự cụ thể. Để tìm kiếm với kết quả ngược như thế này, hãy thêm -v vào lệnh grep.

    Để loại bỏ tất cả các dòng có chứa Phoenix, hãy sử dụng cú pháp sau:

    {{EJS6}}

    Thiết bị đầu cuối in ra tất cả các dòng không chứa từ Phoenix được sử dụng làm tiêu chí tìm kiếm. Sử dụng thêm -i để loại bỏ cả chữ hoa chữ thường, loại trừ hoàn toàn từ được sử dụng cho tìm kiếm này:

    tim kiem grep nguoc

    8. Để hiển thị các dòng khớp chính xác với chuỗi tìm kiếm

    Mặc định lệnh grep sẽ in toàn bộ các dòng chứa kết quả tìm kiếm trùng khớp trong một tệp. Để chỉ in những dòng hoàn toàn khớp với chuỗi tìm kiếm, hãy thêm tùy chọn -x.

    {{EJS7}}

    Đầu ra sẽ chỉ hiển thị các dòng trùng khớp hoàn toàn. Nếu có bất kỳ từ hoặc ký tự nào khác trong cùng một dòng, grep sẽ không đưa nó vào kết quả tìm kiếm. Khi có khoảng trắng hay ký hiệu trong mẫu tìm kiếm, đừng quên sử dụng thêm dấu “”

    Dưới đây là so sánh các kết quả không có và với toán tử -x trong lệnh grep:

    hien thi cac dong khop voi tim kiem

    9. Liệt kê tên của các tệp phù hợp

    Đôi khi, bạn chỉ cần xem tên của các tệp chứa một từ hoặc chuỗi ký tự và loại trừ các dòng không liên quan khác. Để chỉ in các tên tệp phù hợp với tìm kiếm của bạn, hãy sử dụng toán tử -l:

    {{EJS8}}

    liet ke ten cac tep

    Kết quả hiển thị tên tệp chính xác có chứa Phoenix trong thư mục hiện tại nhưng không in ra các dòng có từ tương ứng:

    Hãy sử dụng toán tử tìm kiếm đệ quy -r, nó giúp bao gồm tất cả các thư mục con trong tìm kiếm của bạn.

    10. Đếm số lượng kết quả

    Grep có thể hiển thị tất cả các tên tệp và số dòng mà nó tìm thấy kết quả phù hợp với từ của bạn.

    Sử dụng toán tử -c để đếm số lượng kết quả phù hợp:

    {{EJS9}}

    đem so tran dau

    11. Để hiển thị số dòng trước hoặc sau chuỗi tìm kiếm

    Đôi khi bạn cần thêm nội dung trong kết quả tìm kiếm để so sánh xem nội dung nào phù hợp nhất.

    Các toán tử sau giúp bạn thêm các dòng mong muốn vào trước, sau hoặc cả hai trong kết quả tìm kiếm:

    • Sử dụng -A: và một số dòng để hiển thị sau một kết quả đầu ra: grep -A 3 mẫu Phoenix – lệnh này in ra ba dòng ở sau kết quả đầu ra.
    • Sử dụng -B: và một số dòng để hiển thị trước một kết quả đầu ra: grep -B 2 mẫu Phoenix – lệnh này in ra hai dòng trước kết quả đầu ra.
    • Sử dụng -C: và một số dòng để hiển thị trước và sau kết qủa đầu ra: grep -C 2 Phoenix sample – lệnh này in ra hai dòng trước và sau kết quả đầu ra.

    12. Để hiển thị số dòng với đối sánh grep

    Khi grep in kết quả với nhiều kết quả trùng khớp, sẽ rất tiện lợi khi xem số dòng bằng cách dùng toán tử -n vào bất kỳ lệnh grep nào để hiển thị số dòng.

    Chúng tôi sẽ tìm kiếm Phoenix trong thư mục hiện tại, hiển thị hai dòng trước và sau các kết quả đầu ra cùng với số dòng của chúng.

    {{EJS10}}

    hien thi so dong doi voi sanh grep

    13. Giới hạn đầu ra grep ở một số dòng cố định

    Một số tệp riêng lẻ sẽ chứa rất nhiều kết quả trùng khớp với yêu cầu của mẫu tìm kiếm. Do đó, để có thể giới hạn số dòng trong đầu ra của grep, bạn có thể thêm tùy chọn -m vào lệnh grep

    {{EJS11}}

    Trong trường hợp này, thiết bị đầu cuối chỉ in hai kết quả khớp đầu tiên mà nó tìm thấy trong tệp mẫu.

    Nếu bạn không chỉ định một tệp cụ thể (như ví dụ là tệp sample) và tìm kiếm tất cả các tệp trong một thư mục, đầu ra sẽ in hai kết quả đầu tiên từ mọi tệp cùng với tên tệp chứa các kết quả phù hợp.

    Tổng kết về grep

    Qua bài viết, bạn đã có thể biết cách sử dụng lệnh grep trong Linux/Unix. Lệnh grep rất linh hoạt với nhiều toán tử và tùy chọn hữu ích. Giúp bạn có thể dễ dàng tìm kiếm những thông tin cần thiết theo yêu cầu mà bạn mong muốn.

    Nếu bạn còn muốn tìm hiểu thêm những câu lệnh khác hoặc những mẹo sử dụng Linux, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

    P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

    Thuê VPS Giá Rẻ tại BKHOST

    Khuyến mãi giảm giá cực sâu, chỉ từ 62k/tháng. Đăng ký ngay hôm nay:

    vps giá siêu rẻ

    Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
    Bình luận
    Trượt lên đầu trang
    Miễn phí cước gọi
    Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
    Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !