예제로 배우는 AWK/사용자 정의 함수

위키책, 위키책

사용자 정의 함수란 프로그래밍을 하는 사람이 마음대로 정의해서 사용하는 함수라는 뜻이다. 프로그램에서의 함수 역시 수학처럼 기본적인 기능은 input된 내용은 함수 식으로 인해 특정한 output으로 바꾸어 주는 것을 기본으로 한다. AWK에서는 function이라는 단어를 그대로 사용하지만 프로그래밍 방법론에 따라 서브루틴(subroutine, 메소드(method), 프로시저(procedure), 서브프로그램(subprogram) 등의 용어를 사용하기도 한다. 사용자 정의 함수는 다음 형식으로 선언된다.

function Name (Parameter, Paramerter,...) {Statements}

함수는 awk 명령 프로그램 어디에서든지 참조될 수 있고, 사용이 정의를 우선한다. 함수의 유효 범위는 전역이고 함수의 매개변수는 스칼라나 배열이다. 매개변수의 이름은 함수에만 유효하기 때문에 다른 함수에 같은 이름을 사용해서는 안 된다. 예를 들어, 매개변수의 이름을 함수나 특수 변수의 이름으로 중복사용하면 안 된다는 것이다. 함수를 호출할 때, 함수 이름과 시작하는 괄호 사이에 공백 문자(space)가 없어야 한다.

기본적인 사용자 정의 함수는 다른과 같은 형식을 가진다.

function sum_10 (a, b) {
  b = a + 10
  return b
}

배열 a와 배열 쇼소의 수를 나타내는 변수 b가 함수 average에 패스된다. 그러면 함수는 평균을 구하고 그 값을 출력하게 된다. 다음과 같은 형식으로 함수를 사용하면 간단하다.

BEGIN  {
        print sum_100(20)    #print 30
        }