Lệnh GREP là gì? 11 Cách sử dụng lệnh GREP trong linux
20/03/2023 10:08 am | Lượt xem : 17482
Lệnh GREP là một trong những lệnh cơ bản và quan trọng nhất trong hệ điều hành Linux. Với khả năng tìm kiếm và trích xuất các chuỗi ký tự từ các tập tin, lệnh GREP rất hữu ích trong quá trình phân tích và xử lý dữ liệu trên Linux. Đặc biệt, lệnh GREP còn hỗ trợ các biểu thức chính quy (regular expressions) để tìm kiếm các chuỗi ký tự phức tạp hơn.
Contents
- Giới thiệu về lệnh GREP
- Tìm kiếm chuỗi trong một file
- Tìm kiếm chuỗi trong nhiều file cùng lúc
- Tìm kiếm chuỗi mà không phân biệt chữ hoa/chữ thường
- Tìm kiếm chuỗi sử dụng biểu thức chính quy (regular expression)
- Tìm kiếm chuỗi đúng với từ khóa cụ thể
- Hiển thị các dòng kết quả với số dòng trước/sau
- Tìm kiếm chuỗi trong tất cả các file và thư mục con
- Tìm kiếm chuỗi không có từ khóa cụ thể
- Đếm số lần xuất hiện của chuỗi trong file
- Hiển thị tên file chứa chuỗi kết quả
- Hiển thị số thứ tự dòng chứa chuỗi kết quả
- Kết luận
Giới thiệu về lệnh GREP
Lệnh GREP là một trong những công cụ quan trọng trong Linux, được sử dụng để tìm kiếm và lọc các chuỗi trong file và thư mục. Các cách sử dụng của lệnh GREP khá đa dạng, từ tìm kiếm chuỗi trong một file đến tìm kiếm chuỗi trong tất cả các file và thư mục con.
Các cách sử dụng lệnh GREP
Để sử dụng lệnh GREP, người dùng có thể áp dụng nhiều cách khác nhau tùy vào mục đích sử dụng. Dưới đây là một số cách sử dụng phổ biến của lệnh GREP:
- Tìm kiếm một chuỗi ký tự trong một tập tin.
- Tìm kiếm một chuỗi ký tự trong nhiều tập tin cùng lúc.
- Tìm kiếm một chuỗi ký tự với tùy chọn không phân biệt chữ hoa và chữ thường.
- Tìm kiếm một chuỗi ký tự với biểu thức chính quy.
- Tìm kiếm chỉ đúng các từ chứa chuỗi ký tự tìm kiếm.
- Hiển thị các dòng kết quả với một số dòng trước và sau.
- Tìm kiếm trong tất cả các tập tin trong thư mục con.
- Tìm kiếm các dòng không chứa chuỗi ký tự tìm kiếm.
- Đếm số lần xuất hiện của chuỗi ký tự tìm kiếm trong tập tin.
- Hiển thị chỉ tên các tập tin chứa chuỗi ký tự tìm kiếm.
- Hiển thị số dòng của kết quả tìm kiếm cuối cùng.
Các cách sử dụng của lệnh GREP không chỉ giúp người dùng tìm kiếm và trích xuất dữ liệu hiệu quả, mà còn giúp tiết kiệm thời gian và tăng độ chính xác trong quá trình làm việc trên Linux.
Tìm kiếm chuỗi trong một file
Lệnh grep trong Linux được sử dụng để tìm kiếm chuỗi trong các file văn bản. Dưới đây là cú pháp sử dụng lệnh grep để tìm kiếm một chuỗi trong một file:
grep “chuỗi cần tìm” tên_file
Trong đó:
- “chuỗi cần tìm” là chuỗi văn bản bạn muốn tìm kiếm
- tên_file là tên của file bạn muốn tìm kiếm
Ví dụ, để tìm kiếm chuỗi “Hello” trong file text.txt, bạn có thể sử dụng lệnh sau:
grep “Hello” text.txt
Kết quả sẽ là tất cả các dòng trong file text.txt chứa chuỗi “Hello”. Nếu không có dòng nào chứa chuỗi “Hello”, không có kết quả được trả về.
Tìm kiếm chuỗi trong nhiều file cùng lúc
Để tìm kiếm một chuỗi trong nhiều file cùng lúc, ta sử dụng cú pháp sau:
grep ‘chuỗi cần tìm’ file1 file2 file3…
Trong đó, chuỗi cần tìm là chuỗi mà bạn muốn tìm kiếm, và file1, file2, file3 là danh sách các file mà bạn muốn tìm kiếm. Bạn có thể liệt kê bất kỳ số lượng file nào mà bạn muốn tìm kiếm.
Ví dụ: để tìm kiếm chuỗi “hello world” trong các file file1.txt, file2.txt, và file3.txt, bạn có thể sử dụng lệnh sau:
grep ‘hello world’ file1.txt file2.txt file3.txt
Lệnh này sẽ tìm kiếm chuỗi “hello world” trong các file file1.txt, file2.txt, và file3.txt và hiển thị các dòng chứa chuỗi này.
Tìm kiếm chuỗi mà không phân biệt chữ hoa/chữ thường
Để tìm kiếm chuỗi mà không phân biệt chữ hoa/chữ thường, bạn có thể sử dụng tùy chọn “-i” hoặc “–ignore-case”. Cú pháp sử dụng như sau:
grep -i “chuỗi cần tìm” tên_file
Hoặc để tìm kiếm trong nhiều file cùng lúc:
grep -i “chuỗi cần tìm” tên_file_1 tên_file_2 …
Ví dụ:
grep -i “tenten” example.txt
Đoạn mã trên sẽ tìm kiếm tất cả các dòng trong file “example.txt” có chứa chuỗi “tenten” mà không phân biệt chữ hoa/chữ thường.
Tìm kiếm chuỗi sử dụng biểu thức chính quy (regular expression)
Để tìm kiếm chuỗi sử dụng biểu thức chính quy, ta sử dụng tham số “-E” hoặc “-P” sau lệnh grep để bật chế độ sử dụng biểu thức chính quy. Sau đó, ta nhập biểu thức chính quy vào để tìm kiếm chuỗi cần tìm.
Ví dụ: ta muốn tìm tất cả các từ bắt đầu bằng chữ “a” trong file “example.txt” sử dụng biểu thức chính quy, ta nhập lệnh sau:
grep -E ‘^a’ example.txt
Trong đó, “^a” là biểu thức chính quy để tìm kiếm các từ bắt đầu bằng chữ “a”. Kết quả trả về sẽ là tất cả các dòng trong file “example.txt” có chứa các từ bắt đầu bằng chữ “a”.
Tìm kiếm chuỗi đúng với từ khóa cụ thể
Để tìm kiếm chuỗi đúng với từ khóa cụ thể, ta sử dụng tham số -w hoặc –word-regexp. Khi đó, grep chỉ tìm kiếm chuỗi khớp với từ đúng, không tìm kiếm các từ chứa từ khóa đó. Ví dụ:
grep -w “apple” fruits.txt
Lệnh trên sẽ tìm kiếm các dòng trong file fruits.txt chứa từ “apple” mà không chứa các từ khác như “pineapple” hay “applesauce”.
Hiển thị các dòng kết quả với số dòng trước/sau
Để hiển thị số dòng trước hoặc sau kết quả tìm kiếm, ta sử dụng tham số -A và -B kèm với số lượng dòng cần hiển thị.
Ví dụ, để hiển thị 2 dòng trước và sau kết quả tìm kiếm trong file example.txt, ta sử dụng lệnh sau:
grep -A 2 -B 2 “pattern” example.txt
Lệnh trên sẽ hiển thị 2 dòng trước và 2 dòng sau kết quả tìm kiếm của chuỗi “pattern” trong file example.txt.
Nếu muốn chỉ hiển thị các dòng trước hoặc sau kết quả tìm kiếm, ta sử dụng tham số -A hoặc -B và truyền số lượng dòng cần hiển thị vào.
Ví dụ, để hiển thị 3 dòng trước kết quả tìm kiếm trong file example.txt, ta sử dụng lệnh sau:
grep -B 3 “pattern” example.txt
Lệnh trên sẽ hiển thị 3 dòng trước kết quả tìm kiếm của chuỗi “pattern” trong file example.txt.
Tìm kiếm chuỗi trong tất cả các file và thư mục con
Để tìm kiếm chuỗi trong tất cả các file và thư mục con, ta sử dụng thêm tùy chọn -r hoặc –recursive. Tùy chọn này cho phép lệnh GREP thực hiện tìm kiếm đệ quy trong tất cả các thư mục con.
Cú pháp sử dụng:
grep -r “chuỗi tìm kiếm” /đường/dẫn/thư/mục
Trong đó:
- -r hoặc –recursive: Tìm kiếm đệ quy trong tất cả các thư mục con
- “chuỗi tìm kiếm”: Chuỗi cần tìm kiếm
- /đường/dẫn/thư/mục: Đường dẫn tới thư mục cần tìm kiếm
Ví dụ minh họa: Tìm kiếm chuỗi “error” trong tất cả các file và thư mục con trong thư mục /var/log:
grep -r “error” /var/log
Kết quả sẽ hiển thị tất cả các dòng chứa chuỗi “error” trong các file và thư mục con của /var/log.
Tìm kiếm chuỗi không có từ khóa cụ thể
Để tìm kiếm chuỗi không có từ khóa cụ thể trong một file sử dụng lệnh GREP với tham số “-v” và kết hợp với từ khóa cần loại trừ bằng biểu thức chính quy. Cú pháp sử dụng như sau:
grep -v ‘pattern’ filename
Trong đó “pattern” là từ khóa cần loại trừ và “filename” là tên file cần tìm kiếm.
Ví dụ: để tìm kiếm tất cả các dòng trong file “text.txt” mà không chứa từ “example”, ta sử dụng lệnh sau:
grep -v ‘example’ text.txt
Lệnh này sẽ hiển thị tất cả các dòng trong file “text.txt” mà không chứa từ “example”.
Đếm số lần xuất hiện của chuỗi trong file
Để đếm số lần xuất hiện của chuỗi trong một file, ta có thể sử dụng lệnh GREP với tùy chọn -c (count). Cú pháp sử dụng như sau:
grep -c “chuỗi” file.txt
Trong đó, chuỗi là chuỗi cần tìm kiếm và file.txt là tên file muốn tìm kiếm trong đó. Kết quả trả về sẽ là số lần xuất hiện của chuỗi trong file.
Ví dụ: để đếm số lần từ “Lorem” xuất hiện trong file “example.txt”, ta sử dụng lệnh:
grep -c “Lorem” example.txt
Kết quả trả về sẽ là số lần xuất hiện của từ “Lorem” trong file “example.txt”.
Hiển thị tên file chứa chuỗi kết quả
Để hiển thị tên các file chứa chuỗi kết quả, ta sử dụng tham số -l hoặc –files-with-matches.
Cú pháp sử dụng:
grep -l “chuỗi_cần_tìm” đường_dẫn_file_hoặc_thư_mục
Trong đó:
- -l hoặc –files-with-matches: chỉ hiển thị tên file chứa chuỗi kết quả, không hiển thị nội dung dòng đó.
- “chuỗi_cần_tìm”: là chuỗi cần tìm kiếm.
- đường_dẫn_file_hoặc_thư_mục: là đường dẫn đến file hoặc thư mục chứa file cần tìm kiếm.
Ví dụ minh họa:
Giả sử ta có thư mục documents chứa các file văn bản, ta muốn tìm kiếm tất cả các file chứa từ “Tenten”. Ta sử dụng lệnh sau:
grep -l “Tenten” documents/
Kết quả hiển thị sẽ là tên các file chứa chuỗi “Tenten” trong thư mục documents và các thư mục con của nó.
Hiển thị số thứ tự dòng chứa chuỗi kết quả
Để hiển thị số thứ tự dòng chứa chuỗi kết quả, ta sử dụng tùy chọn -n của lệnh grep. Tùy chọn này sẽ hiển thị số thứ tự của dòng trên cùng với kết quả tìm kiếm.
Cú pháp sử dụng:
grep -n “chuỗi” file
Trong đó:
- chuỗi: chuỗi cần tìm kiếm
- file: tên file cần tìm kiếm trong
Ví dụ minh họa:
$ cat file.txt
Hello
This is a sample file
For testing grep command
Have a nice day$ grep -n “is” file.txt
2:This is a sample file
Trong ví dụ này, lệnh grep -n “is” file.txt sẽ tìm kiếm chuỗi “is” trong file.txt và hiển thị kết quả với số thứ tự dòng đầu tiên là 2 (vì chuỗi “is” xuất hiện ở dòng thứ 2 của file).
Kết luận
Với những tính năng đa dạng và mạnh mẽ của lệnh GREP, người dùng có thể nhanh chóng và chính xác tìm kiếm thông tin cần thiết trong các file và thư mục trên hệ thống Unix/Linux của mình. Việc nắm vững cách sử dụng lệnh GREP là một kỹ năng quan trọng đối với các nhà phát triển, quản trị hệ thống và người dùng Unix/Linux nói chung.
DỊCH VỤ CLOUD SERVER TỐC ĐỘ XỬ LÝ VƯỢT TRỘI
Bài viết liên quan
Imunify360 là gì? Giải pháp bảo mật trang web dành cho hosting Linux