OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

Luân phiên

Tính năng biểu thức chính quy mở rộng đầu tiên mà chúng ta sẽ thảo luận được gọi là luân phiên, đây là cơ sở cho phép sự so khớp xảy ra giữa một tập hợp các biểu thức. Giống như biểu thức ngoặc cho phép một ký tự đơn khớp với một tập hợp các ký tự được chỉ định, luân phiên cho phép khớp từ một tập hợp các chuỗi hoặc các biểu thức chính quy khác.

Để chứng minh, chúng tôi sẽ sử dụng grep kết hợp với bỏ lỡ. Trước tiên, hãy thử so khớp chuỗi cũ đơn giản:



[tôi @ linuxbox ~] $ tiếng vang "AAA" | grep AAA

AAA

[tôi @ linuxbox ~] $ tiếng vang "BBB" | grep AAA

[tôi @ linuxbox ~] $

[tôi @ linuxbox ~] $ tiếng vang "AAA" | grep AAA

AAA

[tôi @ linuxbox ~] $ tiếng vang "BBB" | grep AAA

[tôi @ linuxbox ~] $


Một ví dụ khá đơn giản, trong đó chúng tôi dẫn đầu ra của bỏ lỡ trong grep và xem kết quả. Khi một kết quả trùng khớp xảy ra, chúng tôi thấy nó được in ra; khi không có kết quả phù hợp xảy ra, chúng tôi không thấy kết quả.

Bây giờ chúng ta sẽ thêm luân phiên, được biểu thị bằng siêu ký tự thanh dọc:



[tôi @ linuxbox ~] $ tiếng vang "AAA" | grep -E 'AAA|BBB'

AAA

[tôi @ linuxbox ~] $ tiếng vang "BBB" | grep -E 'AAA|BBB'

BBB

[tôi @ linuxbox ~] $ tiếng vang "CCC" | grep -E 'AAA|BBB'

[tôi @ linuxbox ~] $

[tôi @ linuxbox ~] $ tiếng vang "AAA" | grep -E 'AAA|BBB'

AAA

[tôi @ linuxbox ~] $ tiếng vang "BBB" | grep -E 'AAA|BBB'

BBB

[tôi @ linuxbox ~] $ tiếng vang "CCC" | grep -E 'AAA|BBB'

[tôi @ linuxbox ~] $


Ở đây chúng ta thấy biểu thức chính quy 'AAA|BBB', có nghĩa là “khớp chuỗi AAA hoặc chuỗi BBB.” Lưu ý rằng vì đây là một tính năng mở rộng nên chúng tôi đã thêm -E tùy chọn để grep (mặc dù chúng ta có thể vừa sử dụng ví dụ thay vào đó là chương trình) và chúng tôi đã đặt biểu thức chính quy trong dấu ngoặc kép để ngăn shell diễn giải siêu ký tự thanh dọc như một toán tử ống. Sự thay thế không giới hạn ở hai lựa chọn:



[tôi @ linuxbox ~] $ tiếng vang "AAA" | grep -E 'AAA|BBB|CCC'

AAA

[tôi @ linuxbox ~] $ tiếng vang "AAA" | grep -E 'AAA|BBB|CCC'

AAA


Để kết hợp xen kẽ với các phần tử biểu thức chính quy khác, chúng ta có thể sử dụng () để phân tách xen kẽ:



[tôi @ linuxbox ~] $ grep -Eh '^(bz|gz|zip)' danh sách thư mục*.txt

[tôi @ linuxbox ~] $ grep -Eh '^(bz|gz|zip)' danh sách thư mục*.txt


Biểu thức này sẽ khớp với tên tệp trong danh sách của chúng tôi bắt đầu bằng “bz”, “gz” hoặc “zip”. Nếu chúng ta bỏ dấu ngoặc đơn thì ý nghĩa của biểu thức chính quy này:



[tôi @ linuxbox ~] $ grep -Eh '^bz|gz|zip' danh sách thư mục*.txt

[tôi @ linuxbox ~] $ grep -Eh '^bz|gz|zip' danh sách thư mục*.txt


thay đổi để khớp với bất kỳ tên tệp nào bắt đầu bằng “bz” hoặc chứa “gz” hoặc chứa “khóa kéo”.


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: