Hướng dẫn biểu thức chính quy Linux: Ví dụ về Regex Grep
⚡ Tóm tắt thông minh
Biểu thức chính quy trong Linux là các chuỗi ký tự đặc biệt dùng để tìm kiếm dữ liệu và khớp các mẫu phức tạp trên các công cụ như grep, sed và vi, sử dụng các dạng cơ bản, khoảng, mở rộng và mở rộng dấu ngoặc nhọn để lọc văn bản một cách chính xác.
Biểu thức chính quy là một trong những tính năng mạnh mẽ nhất của Linux Các công cụ xử lý văn bản cho phép bạn đối sánh, lọc và chuyển đổi dữ liệu bằng các mẫu gọn gàng. Trang này giải thích các dạng cơ bản, khoảng và mở rộng, cộng với mở rộng dấu ngoặc nhọn, kèm theo các ví dụ grep đã được thực hiện.
Biểu thức chính quy của Linux là gì?
Biểu thức chính quy trong Linux là các ký tự đặc biệt giúp tìm kiếm dữ liệu và khớp với các mẫu phức tạp. Biểu thức chính quy thường được viết tắt là 'regexp' hoặc 'regex'. Chúng được sử dụng trong nhiều chương trình Linux như... grep, bash, rename, sed, và nhiều hơn nữa.
Các loại biểu thức chính quy
Để dễ hiểu hơn, chúng ta hãy cùng tìm hiểu từng loại biểu thức chính quy một. Trang này sẽ đề cập đến các biểu thức chính quy cơ bản, khoảng và mở rộng, và kết thúc bằng việc mở rộng dấu ngoặc nhọn.
Biểu thức chính quy cơ bản
Một số lệnh thường dùng có thể sử dụng với biểu thức chính quy là tr, sed, vivà grep. Bảng dưới đây liệt kê một số biểu thức chính quy cơ bản.
| Mã | Mô tả Chi tiết |
|---|---|
| . | Thay thế bất kỳ ký tự nào |
| ^ | Khớp với phần đầu của một chuỗi |
| $ | Khớp với cuối chuỗi |
| * | Khớp với ký tự đứng trước đó không hoặc nhiều lần. |
| \ | Biểu thị các ký tự đặc biệt |
| () | Nhóm biểu thức chính quy |
| ? | Khớp chính xác với một ký tự |
Chúng ta hãy xem một ví dụ. Đầu tiên, chạy lệnh `cat sample` để hiển thị nội dung của một tệp tin hiện có, như hình bên dưới.
Tiếp theo, hãy tìm kiếm nội dung có chứa chữ cái 'a'. Ảnh chụp màn hình bên dưới cho thấy lệnh grep trả về mọi dòng có chứa chữ 'a'.
Dấu mũ '^' khớp với vị trí bắt đầu của một chuỗi ký tự. Ví dụ bên dưới tìm kiếm nội dung bắt đầu bằng chữ cái 'a'.
Chỉ những dòng bắt đầu bằng ký tự 'a' mới được lọc. Những dòng không chứa ký tự 'a' ở đầu sẽ bị bỏ qua.
Chúng ta hãy xem một ví dụ khác. Ảnh chụp màn hình bên dưới một lần nữa hiển thị nội dung của tệp mẫu trước khi lọc theo cuối dòng.
Chỉ chọn những dòng kết thúc bằng chữ 't' bằng cách sử dụng ký hiệu '$' như hình bên dưới.
Khoảng thời gian Biểu thức chính quy
Các biểu thức này chỉ định số lần xuất hiện của một ký tự trong một chuỗi. Chúng được liệt kê bên dưới.
| Biểu hiện | Mô tả Chi tiết |
|---|---|
| {N} | Khớp chính xác với ký tự trước xuất hiện 'n' lần |
| {n, m} | Khớp với ký tự trước xuất hiện 'n' lần nhưng không quá m |
| {N, } | Chỉ khớp với ký tự trước khi nó xuất hiện 'n' lần trở lên |
Ví dụ, hãy lọc ra tất cả các dòng chứa ký tự 'p'. Ảnh chụp màn hình bên dưới hiển thị các dòng phù hợp.
Bây giờ hãy kiểm tra xem ký tự 'p' có xuất hiện chính xác hai lần trong một chuỗi, lần lượt từng cái một. Cú pháp để làm điều này là:
cat sample | grep -E p\{2}
Kết quả của trận đấu theo từng khoảng thời gian được hiển thị bên dưới.
Lưu ý: Bạn cần thêm -E với các biểu thức chính quy này.
Biểu thức chính quy mở rộng
Các biểu thức chính quy này kết hợp nhiều biểu thức lại với nhau. Một số trong đó là:
| Biểu hiện | Mô tả Chi tiết |
|---|---|
| \+ | Khớp với một hoặc nhiều lần xuất hiện của ký tự trước đó |
| \? | Khớp 0 hoặc một lần xuất hiện của ký tự trước đó |
Ví dụ, hãy tìm kiếm tất cả các lần xuất hiện của ký tự 't'. Ảnh chụp màn hình bên dưới hiển thị kết quả.
Giả sử bạn muốn lọc ra những dòng mà ký tự 'a' đứng trước ký tự 't'. Bạn có thể sử dụng lệnh như sau:
cat sample|grep "a\+t"
Kết quả được hiển thị trong ảnh chụp màn hình bên dưới.
Mở rộng nẹp
Cú pháp cho việc mở rộng dấu ngoặc nhọn là một chuỗi hoặc một danh sách các mục được phân tách bằng dấu phẩy bên trong dấu ngoặc nhọn '{}'. Các mục bắt đầu và kết thúc trong một chuỗi được phân tách bởi hai dấu chấm '..'.
Một số ví dụ được trình bày bên dưới.
Trong các ví dụ trên, lệnh echo tạo chuỗi bằng cách sử dụng mở rộng dấu ngoặc nhọn, tạo ra nhiều chuỗi từ một mẫu duy nhất.











