awk programming에서 사용하는 statement들은 거의 C programming과 유사하다.

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 {
actions A
} while (condition)

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 {
printf ("Enter number: ");
}

$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;
}

{
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
Posted by sunshowers
,