awk Implementations ¶It’s kind of fun to put comments like this in your awk code:
// Do C++ comments work? answer: yes! of course
There are a number of other freely available awk implementations.
This section briefly describes where to get them:
awkBrian Kernighan, one of the original designers of Unix awk,
has made his implementation of
awk freely available.
You can retrieve it from GitHub:
git clone https://github.com/onetrueawk/awk bwkawk
This command creates a copy of the Git
repository in a directory named bwkawk. If you omit the last argument
from the git command line, the repository copy is created in a
directory named awk.
This version requires an ISO C (1990 standard) compiler; the C compiler from GCC (the GNU Compiler Collection) works quite nicely.
To build it, review the settings in the makefile, and then just run
make. Note that the result of compilation is named
a.out; you will have to rename it to something reasonable.
See Common Extensions Summary
for a list of extensions in this awk that are not in POSIX awk.
In 2023, Brian Kernighan, along with Al Aho and Peter Weinberger, published
a second edition of their book on awk. Professor Kernighan
also maintains a companion web site for the book.
A copy of all the book’s programs are available there for download.
As a side note, Dan Bornstein has created a Git repository tracking
all the versions of BWK awk that he could find. It’s
available at https://github.com/danfuzz/one-true-awk.
mawkMichael Brennan wrote an independent implementation of awk,
called mawk. It is available under the
GPL (see GNU General Public License),
just as gawk is.
The original distribution site for the mawk source code
no longer has it. A copy is available at
https://www.skeeve.com/gawk/mawk1.3.3.tar.gz.
In 2009, Thomas Dickey took on mawk maintenance.
Basic information is available on
the project’s web page.
The download URL is
https://invisible-island.net/datafiles/release/mawk.tar.gz.
Once you have it,
gunzip may be used to decompress this file. Installation
is similar to gawk’s
(see Compiling and Installing gawk on Unix-Like Systems).
See Common Extensions Summary
for a list of extensions in mawk that are not in POSIX awk.
mawk 2.0In 2016, Michael Brennan resumed mawk development.
His development snapshots are available via Git from the project’s
GitHub page.
awkaWritten by Andrew Sumner,
awka translates awk programs into C, compiles them,
and links them with a library of functions that provide the core
awk functionality.
It also has a number of extensions.
Both the awk translator and the library are released under the GPL.
To get awka, go to https://sourceforge.net/projects/awka.
The project seems to be frozen; no new code changes have been made since approximately 2001.
This project, available at https://github.com/noyesno/awka,
intends to fix bugs in awka and add more features.
pawkNelson H.F. Beebe at the University of Utah has modified
BWK awk to provide timing and profiling information.
It is different from gawk with the --profile option
(see Profiling Your awk Programs)
in that it uses CPU-based profiling, not line-count
profiling. You may find it at either
ftp://ftp.math.utah.edu/pub/pawk/pawk-20030606.tar.gz
or
https://www.math.utah.edu/pub/pawk/pawk-20030606.tar.gz.
awk ¶BusyBox is a GPL-licensed program providing small versions of many
applications within a single executable. It is aimed at embedded systems.
It includes a full implementation of POSIX awk. When building
it, be careful not to do ‘make install’ as it will overwrite
copies of other applications in your /usr/local/bin. For more
information, see the project’s home page.
awkThe versions of awk in /usr/xpg4/bin and
/usr/xpg6/bin on Solaris are more or less POSIX-compliant.
They are based on the awk from Mortice Kern Systems for PCs.
We were able to make this code compile and work under GNU/Linux
with 1–2 hours of work. Making it more generally portable (using
GNU Autoconf and/or Automake) would take more work, and this
has not been done, at least to our knowledge.
The source code used to be available from the OpenSolaris website. However, that project was ended and the website shut down. Fortunately, the Illumos project makes this implementation available. You can view the files one at a time from https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/awk_xpg4.
frawkThis is a language for writing short programs. “To a first
approximation, it is an implementation of the AWK language;
many common awk programs produce equivalent output
when passed to frawk.” However, it has a number of
important additional features. The code is available at
https://github.com/ezrosent/frawk.
goawkThis