User-Defined Functions

POSIX awk allows you to define your own functions. This makes it easy to encapsulate sequences of steps that need to be repeated into a single place, and reuse the code from anywhere in your program.

The following function capitalizes each word in a string. It has one parameter, named input, and five local variables that are written as extra parameters:

    # capitalize each word in a string
    function capitalize(input,    result, words, n, i, w)
    {
       result = ""
       n = split(input, words, " ")
       for (i = 1; i <= n; i++) {
            w = words[i]
            w = toupper(substr(w, 1, 1)) substr(w, 2)
            if (i > 1)
                     result = result " "
            result = result w
       }
       return result
    }

    # main program, for testing
    { print capitalize($0) }

With this input data:

    A test line with words and numbers like 12 on it.

This program produces:

    A Test Line With Words And Numbers Like 12 On It.

Tip

For user-defined functions, no space is allowed between the function name and the left parenthesis when the function is called.

Get Unix in a Nutshell, 4th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.