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:
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/
Bình luận (0
)