Paradigm | Scripting, procedural, data-driven[1] |
---|---|
Designed by | Alfred Aho, Peter Weinberger, and Brian Kernighan |
First appeared | 1977 |
Stable release | IEEE Std 1003.1-2008 (POSIX) / 1985
|
Typing discipline | none; can handle strings, integers and floating-point numbers; regular expressions |
OS | Cross-platform |
Major implementations | |
awk, GNU Awk, mawk, nawk, MKS AWK, Thompson AWK (compiler), Awka (compiler) | |
Dialects | |
old awk oawk 1977, new awk nawk 1985, GNU Awk gawk | |
Influenced by | |
C, sed, SNOBOL[2][3] | |
Influenced | |
Tcl, AMPL, Perl, Korn Shell (ksh93, dtksh, tksh), Lua |
AWK (/ɔːk/[4]) is a domain-specific language designed for text processing and typically used as a data extraction and reporting tool. Like sed and grep, it is a filter,[4] and is a standard feature of most Unix-like operating systems.
The AWK language is a data-driven scripting language consisting of a set of actions to be taken against streams of textual data – either run directly on files or used as part of a pipeline – for purposes of extracting or transforming text, such as producing formatted reports. The language extensively uses the string datatype, associative arrays (that is, arrays indexed by key strings), and regular expressions. While AWK has a limited intended application domain and was especially designed to support one-liner programs, the language is Turing-complete, and even the early Bell Labs users of AWK often wrote well-structured large AWK programs.[5]
AWK was created at Bell Labs in the 1970s,[6] and its name is derived from the surnames of its authors: Alfred Aho (author of egrep), Peter Weinberger (who worked on tiny relational databases), and Brian Kernighan. The acronym is pronounced the same as the name of the bird species auk, which is illustrated on the cover of The AWK Programming Language.[7] When written in all lowercase letters, as awk
, it refers to the Unix or Plan 9 program that runs scripts written in the AWK programming language.
[AWK is] often called a data-driven language -- the program statements describe the input data to match and process rather than a sequence of program steps
The awk action language is Turing-complete, and can read and write files.
AWK1
was invoked but never defined (see the help page).