Grep - Cheatsheet
Cheatsheet về các khái niệm chính liên quan đến việc sử dụng chương trình dòng lệnh grep.
🔖 Gợi ý từ Admin
📝 Tài liệu phỏng vấn kiến thức lập trình: Xem tại đây!!!
📌 Tìm hiểu về thuật toán: Xem tại đây!!!
📌 Roadmaps - Lộ trình trở thành một lập trình viên: Xem tại đây!!!
⚡️ Cheatsheet các ngôn ngữ lập trình: Xem tại đây!!!
⚡️ Handbook lập trình: Xem tại đây!!!
I. Tổng hợp Grep Cheatsheet
1. Cơ bản
⚡️ Cách sử dụng: Wildcards được chấp nhận trong tên tệp.
# Tìm kiếm chuỗi search_string trong đầu ra chuẩn hoặc luồng văn bản.
$ grep [options] search_string
# Tìm kiếm chuỗi search_string trong tệp cụ thể.
$ grep [options] search_string path/to/file
# In ra các dòng trong myfile.txt chứa chuỗi "mellon".
$ grep 'mellon' myfile.txt
⚡️ Các ví dụ về tuỳ chọn
Tùy chọn | Ví dụ | Mô tả |
---|---|---|
-i | grep -i ^DA demo.txt | Quên đi việc phân biệt chữ hoa chữ thường |
-w | grep -w "of" demo.txt | Chỉ tìm kiếm cho từ đầy đủ |
-A | grep -A 3 'Exception' error.log | Hiển thị 3 dòng sau chuỗi khớp |
-B | grep -B 4 'Exception' error.log | Hiển thị 4 dòng trước chuỗi khớp |
-C | grep -C 5 'Exception' error.log | Hiển thị 5 dòng xung quanh chuỗi khớp |
-r | grep -r 'quickref.me' /var/log/nginx/ | Tìm kiếm đệ quy (trong các thư mục con) |
-v | grep -v 'warning' /var/log/syslog | Trả về tất cả các dòng không khớp với mẫu |
-e | grep -e '^al' filename | Sử dụng regex (các dòng bắt đầu bằng 'al') |
-E | grep -E 'ja(s|cks)on' filename | Regex mở rộng (các dòng chứa jason hoặc jackson) |
-c | grep -c 'error' /var/log/syslog | Đếm số lượng sự khớp |
-l | grep -l 'robot' /var/log/* | In ra tên của tệp(s) chứa sự khớp |
-o | grep -o search_string filename | Chỉ hiển thị phần khớp của chuỗi |
-n | grep -n "go" demo.txt | Hiển thị số dòng của các sự khớp |
Lưu ý: Trong các ví dụ trên, các mẫu và tệp tin chỉ mang tính minh họa. Bạn cần thay thế chúng bằng nội dung và đường dẫn thực tế khi sử dụng lệnh grep
trong môi trường làm việc của mình.
2. Grep regular expressions
⚡️ Wildcards
Ký hiệu | Ý nghĩa |
---|---|
. | Bất kỳ ký tự nào. |
? | Tuỳ chọn và chỉ xuất hiện một lần. |
* | Tuỳ chọn và có thể xuất hiện nhiều lần. |
+ | Bắt buộc và có thể xuất hiện nhiều lần. |
⚡️ Định lượng (Quantifiers)
\{n\} | Mục trước xuất hiện chính xác n lần. |
\{n,\} | Mục trước xuất hiện n lần hoặc nhiều hơn. |
\{,m\} | Mục trước xuất hiện tối đa n lần. |
\{n,m\} | Mục trước xuất hiện từ n đến m lần. |
⚡️ POSIX
Ký hiệu | Ý Nghĩa |
---|---|
[:alpha:] | Bất kỳ chữ cái nào (viết thường hoặc viết hoa). |
[:digit:] | Bất kỳ số nào. |
[:alnum:] | Bất kỳ chữ cái hoặc số nào (viết thường hoặc viết hoa). |
[:space:] | Bất kỳ ký tự khoảng trắng nào. |
Lưu ý: Các ký hiệu POSIX này có thể được sử dụng trong các biểu thức chính quy để tìm kiếm các dạng cụ thể của ký tự trong văn bản.
⚡️ Ký tự (Character)
Biểu thức | Ý Nghĩa |
---|---|
[A-Za-z] | Bất kỳ chữ cái nào (viết thường hoặc viết hoa). |
[0-9] | Bất kỳ số nào. |
[0-9A-Za-z] | Bất kỳ chữ cái hoặc số nào (viết thường hoặc viết hoa). |
Các biểu thức [A-Za-z]
, [0-9]
, và [0-9A-Za-z]
được sử dụng để đại diện cho các nhóm cụ thể của ký tự trong các biểu thức chính quy.
⚡️ Vị trí (Position)
Biểu thức | Ý Nghĩa |
---|---|
^ | Đầu dòng. |
$ | Cuối dòng. |
^$ | Dòng trống. |
\< | Bắt đầu từ một từ. |
\> | Kết thúc của một từ. |
Các biểu thức ^
, $
, ^$
, \<
, và \>
được sử dụng để xác định vị trí của chuỗi trong các biểu thức chính quy.