BÀI VIẾT

Hướng dẫn sử dụng lệnh grep cơ bản trên Linux

2.5K
author Huỳnh Đình Hiếu - 2022-08-05 16:42:05 (GMT+7)

Giới thiệu

grep là một lệnh Linux và Unix được sử dụng để tìm kiếm văn bản và chuỗi trong một tệp nhất định. Chúng ta có thể chỉnh định một hoặc nhiều file cùng lúc, hoặc có thể nhận kết quả từ đầu ra của các lệnh khác.

Cú pháp lệnh grep

grep [tùy chọn] <chuỗi tìm kiếm> <filename>

Các tùy chọn lệnh grep.

Tùy chọn Mô tả
-v Hiển thị tất cả các dòng không khớp kết quả tìm kiếm
-c Hiển thị số lượng các dòng khớp kết quả tìm kiếm
-n Hiện thị số dòng khớp kết quả tìm kiếm
-i Khớp cả chữ hoa và thường
-w Buộc MẪU chỉ khớp với toàn bộ các từ
-l Hiển thị tên của file khớp kết quả tìm kiếm
-L Hiển thị tên của file không khớp kết quả tìm kiếm
-h Không có tiền tố tên file trong đầu ra
-H In tiền tố tên file trong đầu ra
-r Thư mục tìm kiếm đệ quy
-R Giống như -r nhưng theo dõi tất cả các liên kết tượng trưng
--color Hiển thị mẫu phù hợp với màu
-m Giới hạn số dòng đầu ra khớp kết quả tìm kiếm
-o Chỉ hiển thị các phần khớp kết quả tìm kiếm
-B Hiển thị số dòng sau dòng khớp kết quả tìm kiếm
-A Hiển thị số dòng trước dòng khớp kết quả tìm kiếm
-C Hiển thị số dòng xung quanh dòng khớp kết quả tìm kiếm

Ví dụ lệnh grep

Tìm kiếm một chuỗi trong file.

Chúng ta có nội dung file 123host.txt như sau:

bash (non-root)
cat 123host.txt
Cloud VPS
Hosting
Seo hosting
Hosting free
Server
SSL
Web Anti-DDOS
WordPress hosting
Backup data

Chúng ta cần tìm kiếm chuỗi hosting trong file 123host.txt chúng ta dùng lệnh như sau:

bash (non-root)
grep 'hosting' 123host.txt
Seo hosting
WordPress hosting

Hiển thị các dòng không khớp với chuỗi cần tìm.

Để hiển thị các dòng không khớp với giá trị tìm kiếm chúng ta dùng tùy chọn -v.

bash (non-root)
grep -v 'SSL' 123host.txt
Cloud VPS
Hosting
Seo hosting
Hosting free
Server
Web Anti-DDOS
WordPress hosting
Backup data

Hiển thị số lượng các khớp kết quả tìm kiếm.

Để hiển thị số lượng các khớp kết quả tìm kiếm chúng ta dùng tùy chọn -c như sau:

bash (non-root)
grep -c 'hosting' 123host.txt
2

Hiện thị số dòng của chuỗi cần tìm.

Để hiển thị số dòng của chuỗi cần tìm kiếm chúng ta dùng tùy chọn -n như sau:

bash (non-root)
grep -n 'hosting' 123host.txt
3:Seo hosting
8:WordPress hosting

Tìm chuỗi khớp cả chữ hoa và thường.

Để tìm chuỗi ký tự không phân biệt chữ hoa chữ thường chúng ta dùng tùy chọn -i như sau:

bash (non-root)
grep -i 'hosting' 123host.txt
Hosting
Seo hosting
Hosting free
WordPress hosting

Tìm chuỗi chính xác.

Ví dụ: chúng ta tìm "no" thì "not", "nothing" cũng có chứa chuỗi no nên cũng sẽ trả về kết qủa. Do đó, nếu bạn muốn tìm chính xác từ mong muốn thì có thể dùng tùy chọn -w.

bash (non-root)
grep -w 123host.txt
no

Tìm kiếm tên tập tin.

Chúng ta có thể dùng tùy chọn -l để liệt kê các tập tin phù hợp với tìm kiếm.

bash (non-root)
 grep -l hosting 123host.txt file1.txt file2.txt
123host.txt

Chúng ta có thể dùng tùy chọn -L để liệt kê các tập tin không phù hợp với tìm kiếm.

bash (non-root)
grep -L hosting 123host.txt file1.txt file2.txt
file1.txt
file2.txt

Chúng ta có thể dùng tùy chọn -H để thêm tiền tố tên tệp trong đầu ra.

bash (non-root)
grep -H hosting 123host.txt file1.txt file2.txt
123host.txt:Seo hosting
123host.txt:WordPress hosting

Chúng ta có thể dùng tùy chọn -h để bỏ tiền tố tên tệp trong đầu ra.

bash (non-root)
grep -H hosting 123host.txt file1.txt file2.txt
Seo hosting
WordPress hosting

Tìm kiếm chuỗi ký tự trong tất cả các file trong thư mục.

Để tìm kiếm chuỗi ký tự 123host trong tất cả các file trong một thư mục/var/www/123host-demo/ chúng ta dùng tham số -r hoặc -R như sau:

bash (non-root)
grep -r 123host /var/www/123host-demo/

Đầu ra màu.

Đánh dấu các chuỗi tìm kiếm, số dòng, tên tệp,... bằng các màu khác nhau. Phụ thuộc vào hỗ trợ màu sắc trong thiết bị đang được sử dụng.

Tùy chọn --color:

  • auto: khi đầu ra được chuyển hướng (lệnh khác, tệp, v.v.) thông tin màu sẽ không được thông qua.

  • always: khi đầu ra được chuyển hướng (lệnh khác, tệp, v.v.) thông tin màu cũng sẽ được chuyển.

  • never: xác định rõ ràng không có đánh dấu.

bash (non-root)
grep --color=auto 'hosting' 123host.txt

color

Sự khác nhau giữa auto và aways:

bash (non-root)
 grep --color=auto 'hosting' 123host.txt > save.txt | cat -v save.txt
Seo hosting
WordPress hosting
bash (non-root)
grep --color=always 'hosting' 123host.txt > save.txt | cat -v save.txt
Seo ^[[01;31m^[[Khosting^[[m^[[K
WordPress ^[[01;31m^[[Khosting^[[m^[[K

Hiển thị thêm dòng trước, sau, xung quanh dòng khớp kết quả tìm kiếm.

Chúng ta có thể lựa chọn tìm kiếm hiển thị ra các dòng trước, sau hoặc xung quanh dòng khớp kết quả tìm kiếm.

grep -<A, B hoặc C> <n> <chuỗi tìm kiếm> <filename>

  • A : Hiển thị dòng sau dòng khớp kết quả tìm kiếm
  • B : Hiển thị dòng trước dòng khớp kết quả tìm kiếm
  • C : Hiển thị dòng xung quanh dòng khớp kết quả tìm kiếm
  • n : Là số dòng chỉ định xem hiển thị trước, sau hay xung quang dòng khớp kết quả tìm kiếm

Ví dụ hiển thị sau kết quả tìm kiếm 3 dòng.

bash (non-root)
grep -A 3 SSL 123host.txt
SSL
Web Anti-DDOS
WordPress hosting
Backup data

Ví dụ hiển thị trước kết quả tìm kiếm 3 dòng.

bash (non-root)
 grep -B 3 SSL 123host.txt
Seo hosting
Hosting free
Server
SSL

Ví dụ hiển thị xung quanh kết quả tìm kiếm 2 dòng.

bash (non-root)
grep -C 2 SSL 123host.txt
Hosting free
Server
SSL
Web Anti-DDOS
WordPress hosting

Ngoài ra chúng ta cũng có thể kết hợp sử nhiều tùy chọn lệnh grep để sử dụng như sau:

bash (non-root)
grep -B 3 -iw ssl 123host.txt 
Seo hosting
Hosting free
Server
SSL

Ở ví dụ chúng ta hiển thị thêm 3 dòng trước dòng khớp kết quả, không phân biệt chữ hoa chữ thường và tìm chính xác.

Tổng kết

Chúng ta đã kết thúc bài hướng dẫn sử dụng lệnh grep trên Linux. Hy vọng qua bài nãy sẽ giúp các bạn hiểu và sử dụng được lệnh grep một cách dễ dàng trên Linux.


Bạn có làm được theo hướng dẫn này không?

Bài liên quan

Lệnh xác định vị trí của tệp hoặc thư mục trên Linux
Lệnh xác định vị trí của tệp hoặc thư mục trên Linux
Lệnh kiểm tra nhiều cổng port đang mở của một tên miền trên Linux
Lệnh kiểm tra nhiều cổng port đang mở của một tên miền trên Linux
Lệnh tạo một dãy số tăng dần trên Linux
Lệnh tạo một dãy số tăng dần trên Linux

Object Storage

Chuẩn S3, không giới hạn băng thông

Object Storage

Thuê Server Riêng

Chi phí thấp, cấu hình cao

Thuê Server Riêng
Thông tin tác giả
1 Bình luận

Tính năng đang được phát triển

Đang tải bình luận