AWK - Biểu thức chính quy

AWK rất mạnh mẽ và hiệu quả trong việc xử lý các biểu thức chính quy. Một số tác vụ phức tạp có thể được giải quyết bằng các biểu thức chính quy đơn giản. Bất kỳ chuyên gia dòng lệnh nào cũng biết sức mạnh của các biểu thức chính quy.

Chương này bao gồm các biểu thức chính quy chuẩn với các ví dụ phù hợp.

Chấm

Nó khớp với bất kỳ ký tự đơn nào ngoại trừ ký tự cuối dòng. Ví dụ, ví dụ sau phù hợp vớifin, fun, fan Vân vân.

Thí dụ

[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'

Khi thực thi đoạn mã trên, bạn nhận được kết quả sau:

Đầu ra

fun
fin
fan

Đầu dòng

Nó phù hợp với đầu dòng. Ví dụ: ví dụ sau in tất cả các dòng bắt đầu bằng mẫuThe.

Thí dụ

[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'

Khi thực thi mã này, bạn nhận được kết quả sau:

Đầu ra

There
Their

Kết thúc dòng

Nó phù hợp với cuối dòng. Ví dụ: ví dụ sau in ra các dòng kết thúc bằng chữ cáin.

Thí dụ

[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'

Đầu ra

Khi thực thi mã này, bạn nhận được kết quả sau:

fun
fin
fan

Khớp bộ ký tự

Nó chỉ được sử dụng để khớp một trong số một số ký tự. Ví dụ: ví dụ sau phù hợp với mẫuCallTall nhưng không Ball.

Thí dụ

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'

Đầu ra

Khi thực thi mã này, bạn nhận được kết quả sau:

Call
Tall

Bộ độc quyền

Trong tập hợp độc quyền, carat phủ định tập hợp các ký tự trong dấu ngoặc vuông. Ví dụ: ví dụ sau chỉ inBall.

Thí dụ

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'

Khi thực thi mã này, bạn nhận được kết quả sau:

Đầu ra

Ball

Thay đổi

Một thanh dọc cho phép các biểu thức chính quy được ORed một cách hợp lý. Ví dụ, ví dụ sau inBallCall.

Thí dụ

[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'

Khi thực thi mã này, bạn nhận được kết quả sau:

Đầu ra

Call
Ball

Không hoặc Một lần xuất hiện

Nó khớp với không hoặc một lần xuất hiện của ký tự trước đó. Ví dụ, ví dụ sau phù hợp vớiColour cũng như Color. Chúng tôi đã làmu như một ký tự tùy chọn bằng cách sử dụng ?.

Thí dụ

[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'

Khi thực thi mã này, bạn nhận được kết quả sau:

Đầu ra

Colour
Color

Không có hoặc nhiều lần xuất hiện

Nó khớp với không hoặc nhiều lần xuất hiện của ký tự trước đó. Ví dụ, ví dụ sau phù hợp vớica, cat, catt, và như thế.

Thí dụ

[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'

Khi thực thi mã này, bạn nhận được kết quả sau:

Đầu ra

ca
cat
catt

Một hoặc nhiều lần xuất hiện

Nó khớp với một hoặc nhiều lần xuất hiện của ký tự trước đó. Ví dụ: ví dụ dưới đây khớp với một hoặc nhiều lần xuất hiện của2.

Thí dụ

[jerry]$ echo -e "111\n22\n123\n234\n456\n222"  | awk '/2+/'

Khi thực thi đoạn mã trên, bạn nhận được kết quả sau:

Đầu ra

22
123
234
222

Phân nhóm

Parentheses ()được sử dụng để nhóm và ký tự | được sử dụng cho các lựa chọn thay thế. Ví dụ: biểu thức chính quy sau đây khớp với các dòng chứaApple Juice or Apple Cake.

Thí dụ

[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk 
   '/Apple (Juice|Cake)/'

Khi thực thi mã này, bạn nhận được kết quả sau:

Đầu ra

Apple Juice
Apple Cake