장성한군사 2012. 5. 22. 17:57

1.     실습 파일을 생성하자.

            cat > exam

            a 95

            b 98

            c 99

            d 100

            d 97

            f 98

Ctrl +d 로 저정한다.

2.      awk '{print $1}' exam

 

3.      cat > sedsrc

s/$//

Ctrl +d 로 저정한다.

 

# sed -f sedscr exam

a 95

b 98

c 99

d 100

e 97

f 98

 

4.     sed -f sedsrc exam | awk 'BEGIN{ sum = 0; print "총점 출력 프로그램"; } {sum += $2} END {print "합계 : " sum}'

[예제 설명]

위의 내용을 설명하도록 하면 다음과 같다.

 

BEGIN{ sum = 0; print "총점 출력 프로그램"; } 위에서 언급된 awk의 모델링에서 BEGIN 부분에 해당한다. 루틴이 돌아가기 이전에 필요한 작업을 이 부분에 기재할 수 있으며, 출력의 머릿말 등을 달아둘 수 있다. 합계를 내기 위한 변수 sum을 지정하고, 그 값을 0으로 초기화하였다.

 

{sum += $2} 실제 프로그램 내용이다. 위에서 Routine(루틴)이라 설명한 곳이다. 이 부분은 한 필드마다 적용이 되며, 함수나 루틴을 사용하여 필요한 작업을 수행한다. 현재의

 

END {print "합계 : " sum} 위에서 언급한 END(마지막) 처리 부분이다. 모든 연산이 끝나고 난 다음 마지막 출력 양식이라든지 결과값을 출력한다. 현재 소스는 합계 내역을 출력한다.

 

Vi sum.awk

#!/bin/awk

BEGIN{sum=0; print "Total"}

{sum +=$2}

END{print sum}

$ sed -f sedsrc exam | gawk -f sum.awk