LAB-awk
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