Hướng dẫn cách sử dụng lệnh Grep trong Linux
Lệnh Grep trong Linux là lệnh để tìm kiếm chuỗi ký tự trong các tệp tin, thư mục. Lệnh này sử dụng như thế nào? Hãy cùng Bizfly Cloud tìm hiểu trong bài viết sau.
Tổng quan về lệnh Grep trong Linux
Lệnh Grep là viết tắt của "Global Regular Expression Print", là một lệnh trong Unix/Linux dùng để tìm kiếm các dòng văn bản trong một mẫu biểu thức chính quy. Khi bạn cần tìm kiếm một chuỗi ký tự cụ thể trong hàng loạt các tệp tin, thư mục, Grep sẽ là công cụ hữu ích nhất, giúp rút ngắn thời gian tìm kiếm.
Cấu trúc của lệnh Grep gồm những gì?
Cấu trúc của lệnh Grep trong Linux như sau: grep [options] pattern [FILE]
Trong đó:
● [options]: tùy chọn của lệnh Grep
● pattern: mẫu tìm kiếm
● [FILE]: file thực hiện tìm kiếm
Một số tùy chọn có sẵn trong lệnh Grep
Mỗi một tùy chọn sẽ có một chức năng khác nhau, dưới đây là một số tùy chọn lệnh Grep và công dụng của chúng:
● i: Tìm kiếm không phân biệt chữ hoa hay thường.
● v: Hiển thị các dòng không chứa mẫu tìm kiếm.
● r hoặc R: Tìm kiếm đệ quy trong các thư mục nhưng R theo dõi các liên kết tượng trưng
● l: Hiển thị tên các tệp tin chứa mẫu tìm kiếm.
● n: Hiển thị số dòng khớp với mẫu tìm kiếm.
● c: Đếm số lần xuất hiện của mẫu tìm kiếm trong mỗi tệp tin.
● w: Chỉ tìm kiếm kết quả hoàn toàn giống với mẫu.
● H: Hiển thị tên tệp tin cho mỗi dòng kết quả.
● o: Chỉ hiển thị phần khớp với mẫu tìm kiếm.
● A [số]: Hiển thị thêm [số] dòng sau dòng kết quả.
● B [số]: Hiển thị thêm [số] dòng trước dòng kết quả.
● C [số]: Hiển thị thêm [số] dòng trước và sau dòng kết quả.
● q: Không hiển thị bất kỳ đầu ra nào.
● L: Hiển thị tên các tệp tin không chứa mẫu tìm kiếm.
● m [số]: Giới hạn số lượng kết quả tìm kiếm.
● color: Tô màu kết quả tìm kiếm
Các cách sử dụng lệnh Grep trong Linux
1. Tìm kiếm không phân biệt chữ hoa hay thường
Khi cần tìm kiếm một chuỗi ký tự mà không muốn phân biệt giữa chữ hoa và chữ thường, sẽ sử dụng tùy chọn -i của lệnh Grep
grep -i "chuỗi tìm kiếm" tên_tệp
Để tìm trong nhiều file cùng lúc, sử dụng lệnh sau:
grep -i "chuỗi tìm kiếm" tên_tệp_1 tên_tệp_2
Ví dụ: grep -i "bizflycloud" example.txt. Lệnh này sẽ tìm kiếm các dòng có chứa "bizflycloud", không phân biệt chữ hoa, chữ thường
2. Hiển thị kết quả trùng khớp
Nếu chỉ muốn hiển thị các dòng thực sự chứa chuỗi tìm kiếm, sử dụng câu lệnh như sau:
grep "chuỗi tìm kiếm" tên_tệp
Ví dụ: grep "bizflycloud" example.txt. Lệnh này sẽ tìm kiếm các dòng có chứa "bizflycloud" và highlight cụm ""bizflycloud"
3. Hiển thị tên tệp phù hợp với mẫu
Nếu bạn đang làm việc với nhiều tệp và chỉ muốn biết tệp nào chứa chuỗi tìm kiếm, bạn có thể sử dụng tùy chọn -l, câu lệnh như sau:
grep -l "chuỗi tìm kiếm" tên_tệp_1 tên_tệp_2 ...
Ngoài tùy chọn -I, bạn có thể sử dụng thêm –files-with-matches, chúng đều cho ra kết quả tên file của chứa chuỗi ký tự tìm kiếm.
Ví dụ: grep -I "bizflycloud" example1.txt example2.txt example3.txt. Lệnh này sẽ cho ra kết quả là tên các file có chứa cụm "bizflycloud".
4. Kiểm tra toàn bộ từ trong tệp
Tùy chọn -w sẽ cho ra kết quả khớp toàn bộ từ và tên file mà bạn đang muốn tìm kiếm. Hoặc bạn có thể sử dụng tùy chọn –word-regexp. Câu lệnh như sau:
grep -w "từ tìm kiếm" tên_tệp
Ví dụ: grep -w "bizflycloud" example1.txt. Lệnh trên sẽ tìm kiếm các dòng trong file example1.txt chứa từ "bizflycloud" mà không có các tiền tố hoặc hậu tố ví dụ như "bizflycloudserver", "bizflycloudlms"
5. Tìm kiếm chuỗi trong nhiều file cùng một lúc
Muốn tìm một chuỗi trong nhiều file cùng một lúc, bạn chỉ cần sử dụng câu lệnh đơn giản như sau:
grep "chuỗi tìm kiếm" tên_tệp_1 tên_tệp_2 ..
Ví dụ: grep "bizflycloud" example1.txt example2.txt example3.txt. Kết quả của lệnh này sẽ tìm kiếm các dòng có chứa "bizflycloud" trong các tệp file và hiển thị chúng.
6. Tìm kiếm ngược
Để hiển thị các dòng không chứa chuỗi tìm kiếm, bạn có thể sử dụng tùy chọn -v với câu lệnh như sau:
grep -v "chuỗi tìm kiếm" tên_tệp
Ví dụ: grep -v "bizflycloud" example.txt. Kết quả sẽ cho ra những dòng không có chứa chuỗi tìm kiếm ""bizflycloud".
7. Hiển thị số thứ tự các dòng của kết quả
Nếu muốn biết chính xác dòng nào trong tệp chứa chuỗi tìm kiếm, bạn có thể sử dụng tùy chọn -n. Câu lệnh như sau:
grep -n "chuỗi tìm kiếm" tên_tệp
Ví dụ: grep -n "bizflycloud" example.txt. Số thứ tự của dòng có chứa kết quả sẽ được hiển thị ở đầu dòng. và đánh dấu khác màu.
8. Giới hạn output của một số dòng nhất định
Để giới hạn số lượng kết quả được hiển thị, bạn có thể sử dụng tùy chọn -m. Câu lệnh grep trong Linux để giới hạn số dòng output như sau:
grep -m [số] "chuỗi tìm kiếm" tên_tệp
Ví dụ: grep -m 5 "bizflycloud" example.txt. Câu lệnh này sẽ chỉ hiện thị 5 dòng đầu tiên có chứa chuỗi "bizflycloud".
9. Đếm số lần xuất hiện của chuỗi trong tệp
Nếu bạn muốn biết chuỗi tìm kiếm xuất hiện bao nhiêu lần trong tệp, bạn có thể sử dụng tùy chọn -c. Câu lệnh như sau:
grep -c "chuỗi tìm kiếm" tên_tệp
Ví dụ: grep -c "bizflycloud" example.txt. Kết quả cuối cùng là số lần chuỗi "bizflycloud" xuất hiện trong tệp example.txt.
10. Tìm kiếm chuỗi sử dụng biểu thức chính quy
Muốn tìm kiếm chuỗi sử dụng biểu thức chính quy cần sử dụng đến tùy chọn "-E" hoặc "-P". Tùy chọn này sẽ bật chế độ sử dụng biểu thức chính quy.
Ví dụ: Tìm kiếm bắt đầu bằng chữ "b" trong file example.txt sử dụng biểu thức chính quy, sử dụng câu lệnh như sau:
grep -E ‘^b’ example.txt
‘^b’ là biểu thức chính quy để tìm kiếm các từ có bắt đầu bằng chữ "b’. Kết quả hiển thị sẽ là các dòng trong file có từ bắt đầu bằng chữ "b".
Kết luận
Bài viết trên đã hướng dẫn bạn đọc cách sử dụng lệnh Grep trong Linux cơ bản. Nắm vững các cách sử dụng lệnh Grep sẽ giúp tiết kiệm thời gian và tăng hiệu quả công việc.