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ẫuCall và Tall 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 inBall và Call.
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