manpagez: man pages & more
info gawk
Home | html | info | man

File: gawk.info,  Node: Other Versions,  Next: Installation_summary.php">Installation summary,  Prev: Bugs,  Up: Installation

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 minor node 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 it from GitHub:

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

     This command creates a copy of the Git (https://git-scm.com)
     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.

     *Note Common Extensions:: for a list of extensions in this 'awk'
     that are not in POSIX 'awk'.

     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 .

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

     The original distribution site for the 'mawk' source code no longer
     has it.  A copy is available at
     .

     In 2009, Thomas Dickey took on 'mawk' maintenance.  Basic
     information is available on the project's web page
     (http://www.invisible-island.net/mawk).  The download URL is
     .

     Once you have it, 'gunzip' may be used to decompress this file.
     Installation is similar to 'gawk''s (*note Unix Installation::).

     *Note Common Extensions:: for a list of extensions in 'mawk' that
     are not in POSIX 'awk'.

'mawk' 2.0
     In 2016, Michael Brennan resumed 'mawk' development.  His
     development snapshots are available via Git from the project's
     GitHub page (https://github.com/mikebrennan000/mawk-2).

'awka'
     Written 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 .

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

Revive Awka
     This project, available at ,
     intends to fix bugs in 'awka' and add more features.

'pawk'
     Nelson 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 (*note Profiling::) in that it
     uses CPU-based profiling, not line-count profiling.  You may find
     it at either
      or
     .

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
     (https://busybox.net).

The OpenSolaris POSIX 'awk'
     The 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
     (https://wiki.illumos.org/display/illumos/illumos+Home) makes this
     implementation available.  You can view the files one at a time
     from
     .

'frawk'
     This 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
     .

'goawk'
     This is an 'awk' interpreter written in the Go programming language
     (https://golang.org/).  It implements POSIX 'awk', with a few minor
     extensions.  Source code is available from
     .  The author wrote a nice
     article (https://benhoyt.com/writings/goawk/) describing the
     implementation.

'AWKgo'
     This is an 'awk' to Go translator.  It was written by the author of
     'goawk'.  (See the previous entry in this list.)  Source code is
     available from
     .  The author's
     article about it is at .

'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 (http://jawk.sourceforge.net).

Hoijui's 'jawk'
     This project, available at , is
     another 'awk' interpreter written in Java.  It uses modern Java
     build tools.

Libmawk
     This is an embeddable 'awk' interpreter derived from 'mawk'.  For
     more information, see .

Mircea Neacsu's Embeddable 'awk'
     Mircea Neacsu has created an embeddable 'awk' interpreter, based on
     BWK awk.  It's available at .

'pawk'
     This is a Python module that claims to bring 'awk'-like features to
     Python.  See  for more
     information.  (This is not related to Nelson Beebe's modified
     version of BWK 'awk', described earlier.)

'awkcc'
     This is an early adaptation of Unix 'awk' that translates 'awk'
     into C code.  It was done by J. Christopher Ramming at Bell Labs,
     circa 1988.  It's available at .
     Bringing this up to date would be an interesting software
     engineering exercise.

QSE 'awk'
     This is an embeddable 'awk' interpreter.  For more information, see
     .

'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
      for more information,
     including the manual.  The download link there is out of date; see
      for the latest
     download link.

     The project may also be frozen; no new code changes have been made
     since approximately 2014.

Other versions
     See also the "Versions and implementations" section of the
     Wikipedia article
     (https://en.wikipedia.org/wiki/Awk_language#Versions_and_implementations)
     on 'awk' for information on additional versions.

   An interesting collection of library functions is available at
.

   An interesting collection of 'gawk' extensions is available
.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.