awk is a superb language for testing algorithms and applications with some complexity, especially where the problem can be broken into chunks which can streamed as part of a pipe. It’s an ideal tool for augmenting the features of shell programming as it is ubiquitous; found in some form on almost all Unix/Linux/BSD systems. Many problems dealing with text, log lines or symbol tables are handily solved or at the very least prototyped with awk along with the other tools found on Unix/Linux systems.
While awk lends itself well to operating on input a line at a time, processing and then sending some output for each line, it may also be used in a more traditional batching-style application where it reads all the input, processes and then sends the processed output onward.
Yet Another Sudoku Puzzle Solver – YASPS for Awk
The application I chose to use as an example is “yet another sudoku puzzle solver”.
rest here