10 Ví dụ Thực tế về Lệnh Grep của Linux | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

10 Ví dụ Thực tế về Lệnh Grep của Linux

Chia sẻ kiến thức 15/03/2022

Lệnh grep được sử dụng để tìm kiếm các chuỗi (strings) trong tệp văn bản. Dưới đây là mười ví dụ về grep mà bạn có thể thấy hữu ích.

 

Lệnh grep cung cấp quyền truy cập vào tiện ích grep, một công cụ xử lý tệp được sử dụng để tìm các mẫu (pattern) trong tệp văn bản. Nó có thể hữu ích trong nhiều trường hợp và chắc chắn là một trong những lệnh Linux được sử dụng nhiều nhất. Bài viết này cung cấp một số lệnh grep Linux đơn giản nhưng hữu ích được sử dụng trong thế giới thực.

Tệp ví dụ

Chúng tôi đã tạo một tập tham khảo để giúp người đọc hiểu về grep một cách hiệu quả hơn. Bạn có thể tạo một bản sao của tệp này bằng cách đưa ra lệnh shell sau trong terminal của bạn.

cat <<END >> test-file
This is a simple text file that contains
multiple strings as well as some telephone numbers
(555) 555-1234 (567) 666-2345
and email plus web addresses
john@doe.com
https://google.com
ftp://mywebserver.com
END

1. Tìm văn bản trong tệp

Để tìm kiếm mẫu văn bản trong tệp, chỉ cần chạy grep theo sau là tên mẫu. Ngoài ra, hãy chỉ định tên của tệp chứa văn bản.

grep "email" test-file

Lệnh này sẽ hiển thị dòng trong test-file của chúng ta có chứa từ email. Bạn cũng có thể tìm kiếm cùng một từ trong nhiều tệp bằng grep.

grep "example" /usr/share/dict/american-english /usr/share/dict/british-english

Lệnh trên hiển thị tất cả các lần xuất hiện của từ example trong các tệp từ điển american-english (Mỹ-Anh) and british-english (Anh-Anh). 

2. Tìm các từ khớp chính xác

Lệnh grep của Linux được minh họa trong ví dụ trước cũng liệt kê các dòng có khớp một phần. Sử dụng lệnh dưới đây nếu bạn chỉ cần các lần xuất hiện chính xác của một từ.

grep -w "string" test-file

Tùy chọn -w hoặc –word-regexp của grep giới hạn đầu ra chỉ hiển thị các kết quả phù hợp chính xác. Grep bao gồm một số cờ (flag) có thể được sử dụng với lệnh mặc định.

3. Không phân biệt viết hoa/viết thường

Theo mặc định, grep tìm kiếm các mẫu có phân biệt chữ hoa chữ thường. Tuy nhiên, bạn có thể muốn tắt tính năng này:

grep -i "this" test-file

Sử dụng tùy chọn -i hoặc –ignore-case để tắt phân biệt chữ hoa và chữ thường.

>>> Đọc ngay: Cách cài đặt Microsoft Office trên Linux

4. Đếm số lượng các mẫu

Cờ -c  là viết tắt của count (đếm). Nó hiển thị số kết quả phù hợp đã được tìm thấy cho một mẫu cụ thể. Quản trị viên có thể sử dụng cờ này để truy xuất thông tin cụ thể về hệ thống.

Bạn có thể kết hợp lệnh ps với grep để đếm các tiến trình thuộc về người dùng hiện tại.

ps -ef | grep -c $USER

Lệnh sau đây hiển thị số lượng tệp MP3  có trong một thư mục.

ls ~/Music | grep -c .mp3

5. Số dòng hiển thị chứa các kết quả phù hợp

Bạn có thể muốn tìm số dòng chứa một kết quả khớp nhất định. Sử dụng tùy chọn (option) -n hoặc –line-number của grep để làm được điều này.

cat /etc/passwd | grep -n rubaiat

Tùy chọn này đặc biệt hữu ích để gỡ lỗi mã nguồn (source code) và khắc phục sự cố tệp nhật ký (log file). Để hiển thị số lượng tất cả các dòng trong ~/.vimrc  được sử dụng để  định cấu hình trình soạn thảo văn bản Vim :

grep -n "set" ~/.vimrc

6. Tìm tên tệp bằng tiện ích mở rộng

Để có danh sách tất cả các  tệp MP3 có trong thư mục  ~/Music :

ls ~/Music/ | grep ".mp3"

Bạn có thể thay thế .mp3 bằng bất kỳ phần mở rộng nào khác để định vị các tệp cụ thể. Lệnh sau liệt kê tất cả các tệp php có trong thư mục làm việc hiện tại.

ls | grep ".php"

7. Tìm mẫu trong tệp nén

Lệnh grep của Linux cũng có thể tìm thấy các mẫu bên trong các tệp nén. Tuy nhiên, bạn sẽ cần sử dụng lệnh zgrep để thực hiện việc này. Trước tiên, hãy tạo một kho lưu trữ nén của tệp test-file bằng cách nhập:

gzip test-file

Bây giờ, bạn có thể tìm kiếm văn bản hoặc các mẫu khác bên trong kho lưu trữ kết quả.

zgrep email test-file.gz

>>> Đọc ngay: Cách bắt đầu sử dụng Linux

8. Tìm địa chỉ email

Quản trị viên cũng có thể liệt kê các địa chỉ email từ các tệp văn bản bằng cách sử dụng lệnh grep. Ví dụ sau thực hiện điều này bằng cách tìm kiếm một mẫu biểu thức chính quy (regular expression).

grep '^[a-zA-Z0-9]\+@[a-zA-Z0-9]\+\.[a-z]\{2,\}' test-file

Bạn có thể tìm thấy các biểu thức chính quy để thực hiện các công việc tương tự hoặc bạn có thể tự tạo chúng nếu bạn biết cách chúng hoạt động.

9. Tìm số điện thoại bằng Grep

Bạn có thể sử dụng biểu thức chính quy grep để lọc số điện thoại khỏi tệp văn bản. Lưu ý rằng bạn phải điều chỉnh mẫu để phù hợp với loại số điện thoại bạn cần.

grep '\(([0-9]\{3\})\|[0-9]\{3\}\)[ -]\?[0-9]\{3\}[ -]\?[0-9]\{4\}' test-file

Lệnh nói trên lọc ra các số điện thoại Mỹ gồm mười chữ số.

10. Tìm URL từ tệp nguồn

Chúng ta có thể tận dụng sức mạnh của grep để liệt kê các URL được tìm thấy trong tệp văn bản. Lệnh dưới đây sẽ trả về tất cả các URL có trong test-file.

grep -E "^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})" test-file

Chúng ta lại đang sử dụng tùy chọn -E cho các biểu thức chính quy mở rộng. Bạn cũng có thể sử dụng lệnh egrep để không phải thêm nó. 

egrep "^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})" test-file

Thành thạo lệnh Linux Grep

FUNiX đã trình bày một số ví dụ hữu ích về cách lệnh grep của Linux được dùng để giải quyết các vấn đề trong thế giới thực. Mặc dù những ví dụ này minh họa sức mạnh của grep trong việc xử lý văn bản, nhưng bạn sẽ cần phải nắm vững các biểu thức chính quy nếu bạn muốn làm việc hiệu quả với grep.

>>> Nếu bạn đang có nhu cầu tìm hiểu về khóa học lập trình đi làm ngay. Hãy liên hệ với FUNiX ngay tại đây:

>>> Xem thêm chuỗi bài viết liên quan:

Cách tạo ảnh Mosaic trên Linux với Polyfoto

Cách ghi chú trong Terminal Linux với ứng dụng ghi chú tnote

Cách sử dụng lệnh wc trong Linux

Hướng dẫn cách sử dụng lsof để theo dõi file đang mở trên Linux

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/grep-command-practical-examples/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!