Awk is being used all around the world for real programming problems,
but the news is not getting out.
We are aiming to create a database of at least one hundred Awk programs which will:
Identify the tasks that Awk is really being used for
Enable analysis of the benefits of the language for practical programming
Serve as an information exchange for applications
Contribute
If you, or your colleagues or friends have
written a program which has been used for purposes small or large,
why not take five minutes to record the facts, so that others can see what you've done?
To contribute, fill in this template
and mail it to mail@awk.info with the subject line Awk 100 contribution.
PatentMatrix is an automated tool to survey patents related to large sets of genes or proteins.
The tool allows a rapid survey of patents associated
with genes or proteins in a particular area of interest as
defined by keywords. It can be efficiently used to evaluate
the IP-related novelty of scientific findings and to rank
genes or proteins according to their IP position.
VitaminA IRC bot is an experiment on what can be done with GNU AWK. It's a very simple though powerful scripting language. Using the coprocess feature, plugins can be implemented very easily and in a language-independent way as a side-effect.
The project runs only on Unix-derived systems.
Plaiter (pronounced "player") is a command line front end to command line music players.
What does Plaiter do that (say) mpg123 can't already? It queues tracks, first of all. Secondly, it understands commands like play, plause, stop, next and prev. Finally, unlike most of the command line music players out there, Plaiter can handle a play list with more than one type of audio file, selecting the proper helper app to handle each type of file you throw at it.
Awk, impelemeneted in the Java virtual machine. Very useful for extending lightweight scripting in Awk with (e.g.) network and GUI facilities from Java.
Programmers often take awk "as is", never thinking to use it as a lab in which we can explore other language extensions. This is of course, only one way to treat the Awk code base.
An alternate approach is to treat the Awk code base as a reusable library of parsers, regular expression engines, etc etc and to make modifications to the lanugage. This second approach was take by David Ladd and J. Christopher Raming in their A* system.
Aaslg and aaslr implement the Amazing Awk Syntax Language, AASL
(pro- nounced ``hassle''). Aaslg (pronounced ``hassling'') takes
an AASL specification from the concatenation of the file(s) (default
standard input) and emits the corresponding AASL table on standard
output.
The AASL implementation is not large. The scanner is 78 lines of
awk,the parser is 61 lines of AASL (using a fairly low-density
paragraphing style and a good manycomments), and the semantics pass
is 290 lines of awk. The table interpreter is 340 lines, about half
of which (and most of the complexity) can be attributed to the
automatic error recovery.
As an experiment with a more ambitious AASL specification, one for
ANSI C was written. This occupies 374 lines excluding comments and
blank lines, and with the exception of the messy details of
C declarators is mostly a fairly straightforward transcription of the
syntax given in the ANSI standard.
"aaa" (the Amazing Awk Assembler) is a primitive assembler written entirely
in awk and sed. It was done for fun, to establish whether it was possible.
It is; it works.
Using "aaa", it's very easy to adapt to a new machine, provided the machine
falls into the generic "8-bit-micro" category.
For many years, Ronald Loui has taugh AI using Awk. He writes:
Most
people are surprised when I tell them what language we use in our
undergraduate AI programming class. That's understandable. We use
GAWK.
A repeated observation in this class is that only the scripting
programmers can generate code fast enough to keep up with the
demands of the class. Even though students
were allowed to choose any language they wanted, and many had
to unlearn the Java ways of doing things in order to benefit
from scripting, there were few who could develop ideas into
code effectively and rapidly without scripting.
What I have found not only surprising but also hopeful, is that
when I have approached the AI people who still enjoy
programming, some of them are not the least bit
surprised.
Awf may not be lightning fast, and it has certain restrictions, but it does a decent job on most manual pages and simple -ms documents, and isn't subject to AT&T's brain-damaged licensing that denies many System V users any text formatter at all. It is also a text formatter that is simple enough to be tinkered with, for people who want to experiment.
The stable and cross-platform nature of Awk enabled the simple creation of a robust toolkit for teaching operating system concepts to university
students. The toolkit is much simpler/ easier to port to new platforms, than alternative and more
elaborate course ware tools.
This work was the basis for a quite prestigious publication in the IEEE Transactions on Education journal, 2008, Vol 51, Issue 4. Who said
Awk was an old-fashioned tool?
Supports the essential operations of defining strings and replacing strings in text by their definitions.
All in 110 lines.
A little awk goes a long way.
Arnold Robbins and Nelson Beebe's classic
spell checker
A powerful spell checker, and a case-study on how to best write applications using hundreds of lines of Awk.