awk programming에서 사용하는 statement들은 거의 C programming과 유사하다.
Conditional statements
1. if ... else if ... else
if (expression A)
2. expr ? action A : action B
예) grade = (avg >= 65) ? "Pass" : "Fail"
Loop statements
1. while loop
while (condition) {
Conditional statements
1. if ... else if ... else
if (expression A)
actions A
[ else if (expression B)
actions B ]
[ else
actions C ]
2. expr ? action A : action B
예) grade = (avg >= 65) ? "Pass" : "Fail"
Loop statements
1. while loop
while (condition) {
actions A
}
2. do loop
do {
2. do loop
do {
actions A
} while (condition)
3. for loop
for (set_counter; test_counter; increment_counter) {
3. for loop
for (set_counter; test_counter; increment_counter) {
actions A
}
특히 loop을 사용할 때, control flow에 영향을 주는 statement들이 몇개 있는데 이들에 대해 알아보면 다음과 같다.
Loop flow control statement
a. break : 해당 loop의 나머지를 수행하지 않고 loop을 벗어난다.
b. continue: 해당 loop의 해당 iteration에 대해서만 나머지를 수행하지 않고 다음 iteration을 시작.
Program flow control statement
a. exit : 해당 record에 대해서 나머지를 수행하지 않고 awk program을 종료
b. next : 해당 record에 대해서 나머지 script를 수행하지 않고 다음 record를 입력받아 script의 처음부터 수행.
이를 바탕으로 input을 받아 factorial을 구하는 프로그램을 짜보면 다음과 같다.
BEGIN {
특히 loop을 사용할 때, control flow에 영향을 주는 statement들이 몇개 있는데 이들에 대해 알아보면 다음과 같다.
Loop flow control statement
a. break : 해당 loop의 나머지를 수행하지 않고 loop을 벗어난다.
b. continue: 해당 loop의 해당 iteration에 대해서만 나머지를 수행하지 않고 다음 iteration을 시작.
Program flow control statement
a. exit : 해당 record에 대해서 나머지를 수행하지 않고 awk program을 종료
b. next : 해당 record에 대해서 나머지 script를 수행하지 않고 다음 record를 입력받아 script의 처음부터 수행.
이를 바탕으로 input을 받아 factorial을 구하는 프로그램을 짜보면 다음과 같다.
BEGIN {
printf ("Enter number: ");
}
$1 ~ /^[0-9]+$/ {
$1 ~ /^[0-9]+$/ {
number = $1;
if (number == 0)
fact = 1;
else
fact = number;
for (x=number-1; x>1; x--)
fact *= x;
printf ("The factorial of %d is %g\n", number, fact);
exit;
if (number == 0)
fact = 1;
else
fact = number;
for (x=number-1; x>1; x--)
fact *= x;
printf ("The factorial of %d is %g\n", number, fact);
exit;
}
{
{
printf ("\nInvalid entry. Enter a number: ");
}
'Linux' 카테고리의 다른 글
[awk] awk 사용법#5 - Functions (0) | 2010.05.17 |
---|---|
[awk] awk 사용법#4 - Array (0) | 2010.05.14 |
[awk] awk 사용법#2 - awk program basic (0) | 2010.05.13 |
[awk] awk 사용법#1 - awk program의 구조 (0) | 2010.05.13 |
[CVS] CVS 사용법 (0) | 2010.05.11 |