AWK - Vòng lặp

Chương này giải thích các vòng lặp của AWK với ví dụ phù hợp. Vòng lặp được sử dụng để thực hiện một tập hợp các hành động theo cách lặp lại. Việc thực hiện vòng lặp tiếp tục miễn là điều kiện của vòng lặp là đúng.

Đối với vòng lặp

Cú pháp của for vòng lặp là -

Cú pháp

for (initialization; condition; increment/decrement)
   action

Ban đầu, forcâu lệnh thực hiện hành động khởi tạo, sau đó nó kiểm tra điều kiện. Nếu điều kiện là đúng, nó thực hiện các hành động, sau đó nó thực hiện hoạt động tăng hoặc giảm. Việc thực hiện vòng lặp tiếp tục miễn là điều kiện đúng. Ví dụ: ví dụ sau in từ 1 đến 5 bằng cách sử dụngfor vòng lặp -

Thí dụ

[jerry]$ awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'

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

Đầu ra

1
2
3
4
5

Trong khi lặp lại

Các whilevòng lặp tiếp tục thực hiện hành động cho đến khi một điều kiện logic cụ thể được đánh giá là true. Đây là cú pháp củawhile vòng lặp -

Cú pháp

while (condition)
   action

AWK đầu tiên kiểm tra điều kiện; nếu điều kiện là đúng, nó sẽ thực hiện hành động. Quá trình này lặp lại miễn là điều kiện vòng lặp đánh giá là true. Ví dụ: ví dụ sau in từ 1 đến 5 bằng cách sử dụngwhile vòng lặp -

Thí dụ

[jerry]$ awk 'BEGIN {i = 1; while (i < 6) { print i; ++i } }'

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

Đầu ra

1
2
3
4
5

Vòng lặp Do-While

Các do-whilevòng lặp tương tự như vòng lặp while, ngoại trừ điều kiện kiểm tra được đánh giá ở cuối vòng lặp. Đây là cú pháp củado-whilevòng lặp -

Cú pháp

do
   action
while (condition)

Trong một do-whilevòng lặp, câu lệnh hành động được thực thi ít nhất một lần ngay cả khi câu lệnh điều kiện đánh giá là sai. Ví dụ: ví dụ sau in từ 1 đến 5 số bằng cách sử dụngdo-while vòng lặp -

Thí dụ

[jerry]$ awk 'BEGIN {i = 1; do { print i; ++i } while (i < 6) }'

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

Đầu ra

1
2
3
4
5

Tuyên bố ngắt

Đúng như tên gọi, nó được dùng để kết thúc quá trình thực thi vòng lặp. Đây là một ví dụ kết thúc vòng lặp khi tổng lớn hơn 50.

Thí dụ

[jerry]$ awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) { 
      sum += i; if (sum > 50) break; else print "Sum =", sum 
   } 
}'

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

Đầu ra

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

Tiếp tục Tuyên bố

Các continuecâu lệnh được sử dụng bên trong vòng lặp để chuyển sang lần lặp tiếp theo của vòng lặp. Nó rất hữu ích khi bạn muốn bỏ qua quá trình xử lý một số dữ liệu bên trong vòng lặp. Ví dụ: ví dụ sau sử dụngcontinue để in các số chẵn từ 1 đến 20.

Thí dụ

[jerry]$ awk 'BEGIN {
   for (i = 1; i <= 20; ++i) {
      if (i % 2 == 0) print i ; else continue
   } 
}'

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

Đầu ra

2
4
6
8
10
12
14
16
18
20

Tuyên bố thoát

Nó được sử dụng để dừng việc thực thi tập lệnh. Nó chấp nhận một số nguyên làm đối số là mã trạng thái thoát cho quy trình AWK. Nếu không có đối số nào được cung cấp,exittrả về trạng thái không. Đây là một ví dụ dừng thực thi khi tổng lớn hơn 50.

Thí dụ

[jerry]$ awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) {
      sum += i; if (sum > 50) exit(10); else print "Sum =", sum 
   } 
}'

Đầu ra

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

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

Hãy để chúng tôi kiểm tra trạng thái trả về của tập lệnh.

Thí dụ

[jerry]$ echo $?

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

Đầu ra

10