Previous: , Up: Installation   [Contents][Index]


B.5 Other Freely Available awk Implementations

It’s kind of fun to put comments like this in your awk code.
      // Do C++ comments work? answer: yes! of course

Michael Brennan

There are a number of other freely available awk implementations. This section briefly describes where to get them:

Unix awk

Brian Kernighan, one of the original designers of Unix awk, has made his implementation of awk freely available. You can retrieve this version via the World Wide Web from his home page. It is available in several archive formats:

Shell archive

http://www.cs.princeton.edu/~bwk/btl.mirror/awk.shar

Compressed tar file

http://www.cs.princeton.edu/~bwk/btl.mirror/awk.tar.gz

Zip file

http://www.cs.princeton.edu/~bwk/btl.mirror/awk.zip

You can also retrieve it from Git Hub:

git clone git://github.com/onetrueawk/awk bwkawk

The above command creates a copy of the Git repository in a directory named bwkawk. If you leave that argument off 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.

See Common Extensions, for a list of extensions in this awk that are not in POSIX awk.

mawk

Michael Brennan wrote an independent implementation of awk, called mawk. It is available under the GPL (see Copying), just as gawk is.

The original distribution site for the mawk source code no longer has it. A copy is available at http://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 http://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 Unix Installation).

See Common Extensions, for a list of extensions in mawk that are not in POSIX awk.

awka

Written by Andrew Sumner, awka translates awk programs into C, compiles them, and links them with a library of functions that provides the core awk functionality. It also has a number of extensions.

The awk translator is released under the GPL, and the library is under the LGPL.

To get awka, go to http://sourceforge.net/projects/awka.

The project seems to be frozen; no new code changes have been made since approximately 2003.

pawk

Nelson H.F. Beebe at the University of Utah has modified Brian Kernighan’s awk to provide timing and profiling information. It is different from gawk with the --profile option. (see Profiling), 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 http://www.math.utah.edu/pub/pawk/pawk-20030606.tar.gz.

Busybox 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.

The OpenSolaris POSIX awk

The version of awk in /usr/xpg4/bin on Solaris is more-or-less POSIX-compliant. It is based on the awk from Mortice Kern Systems for PCs. This author was able to make it 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 web site. However, that project was ended and the web site 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.

jawk

This is an interpreter for awk written in Java. It claims to be a full interpreter, although because it uses Java facilities for I/O and for regexp matching, the language it supports is different from POSIX awk. More information is available on the project’s home page.

Libmawk

This is an embeddable awk interpreter derived from mawk. For more information see http://repo.hu/projects/libmawk/.

pawk

This is a Python module that claims to bring awk-like features to Python. See https://github.com/alecthomas/pawk for more information. (This is not related to Nelson Beebe’s modified version of Brian Kernighan’s awk, described earlier.)

QSE Awk

This is an embeddable awk interpreter. For more information see http://code.google.com/p/qse/ and http://awk.info/?tools/qse.

QTawk

This is an independent implementation of awk distributed under the GPL. It has a large number of extensions over standard awk and may not be 100% syntactically compatible with it. See http://www.quiktrim.org/QTawk.html for more information, including the manual and a download link.

Other Versions

See also the Wikipedia article, for information on additional versions.


Previous: , Up: Installation   [Contents][Index]