Why I Love Gema by

Why I Love Gema by David A. Mundie
Gema listing at dmozgema: gereral purpose macro processor – Text processing utility based on pattern matching. In general, it reads an input file and copies it to an output file, while performing certain transformations to the data as specified by a set of patterns set by user. Can be used to do things done by Unix utilities cpp, grep, sed, awk, or strings. Can be used as a macro processor, but is far more general than cpp or m4 because it does not impose any syntax for what a macro call looks like. Unlike utilities like sed or awk, gema can deal with patterns that span multiple lines and with nested constructs. Can also use multiple sets of rules in different contexts.”