## 11.6. Variables and Array Assignments

Variables can be assigned a value with an = sign. For example:

>     FS = ","

Expressions using the operators `+`, `-`, `/`, and `%` (modulo) can be assigned to variables.

Arrays can be created with the `split()` function (see below), or they can simply be named in an assignment statement. Array elements can be subscripted with numbers (array`[1]`, ..., array`[`n`]`) or with strings. Arrays subscripted by strings are called associative arrays. [11] For example, to count the number of widgets you have, you could use the following script:

> [11]In fact, all arrays in `awk` are associative; numeric subscripts are converted to strings before using them as array subscripts. Associative arrays are one of `awk`'s most powerful features.

>     /widget/ { count["widget"]++ }		Count widgets
>     END      { print count["widget"] }		Print the count

You can use the special `for` loop to read all the elements of an associative array:

>     for (item in array)
>     	process array[item]

The index of the array is available as `item`, while the value of an element of the array can be referenced as `array[item]`.

You can use the operator `in` to see if an element exists by testing to see if its index exists (`nawk` only):

>     if (index in array)
>     	...

This sequence tests that `array[index]` exists, but you cannot use it to test the value of the element referenced by `array[index]`.

You can also delete individual elements of the array using the `delete` statement (`nawk` only).

### 11.6.1. Escape Sequences

Within string and regular expression constants, the following escape sequences may be used. Note: The `\x` escape sequence is a common extension; it is not part of POSIX `awk`.

Sequence | Meaning | Sequence | Meaning
--- | --- | --- | ---
`\a` | Alert (bell) | `\v` | Vertical tab
`\b` | Backspace | `\\` | Literal backslash
`\f` | Form feed | `\``nnn` | Octal value nnn
`\n` | Newline | `\x` `nn` | Hexadecimal value nn
`\r` | Carriage return | `\"` | Literal double quote (in strings)
`\t` | Tab | `\/` | Literal slash (in regular expressions)

Copyright © 2003 O'Reilly & Associates. All rights reserved.