73

Trying to understand the differences between the two functions gawk vs. awk? When would one use gawk vs awk? Or are they the same in terms of usage?

Also, could one provide an example?

Alex Stragies
  • 5,857
  • 2
  • 32
  • 56
chrisjlee
  • 8,283
  • 16
  • 49
  • 54

1 Answers1

71

AWK is a programming language. There are several implementations of AWK (mostly in the form of interpreters). AWK has been codified in POSIX. The main implementations in use today are:

  • nawk (“new awk”, an evolution of oawk, the original UNIX implementation), used on *BSD and widely available on Linux;
  • mawk, a fast implementation that mostly sticks to standard features;
  • gawk, the GNU implementation, with many extensions;
  • the Busybox (small, intended for embedded systems, not many features).

If you only care about standard features, call awk, which may be Gawk or nawk or mawk or some other implementation. If you want the features in GNU awk, use gawk or Perl or Python.

AJM
  • 119
  • 6
Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175
  • 6
    Actually, the BusyBox `awk` is pretty close in behavior to `gawk` v3; I think it's more full-featured than `nawk`. – dubiousjim Apr 19 '12 at 19:37
  • Good summary. **A note for Debian users**: The `buster` release included a [1996 release of `mawk`](https://packages.debian.org/buster/mawk). The recent `bullseye` release [brought us up to a 2020 version - 1.3.4](https://packages.debian.org/bullseye/mawk). Oddly perhaps - *at least on my RPi OS `buster` system* - the 1996 `mawk` was never updated/upgraded during 3 years of use. – Seamus Feb 15 '22 at 01:30