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