Gema est un utilitaire de traitement de texte à usage général basé sur le concept de correspondance de motifs.En général, il lit un fichier d'entrée et le copie dans un fichier de sortie, tout en effectuant certaines transformations des données comme spécifié par un ensemble de modèles définis par l'utilisateur.Il peut être utilisé pour faire le genre de choses qui sont faites par les utilitaires Unix tels que cpp, grep, sed, awk ou chaînes.Il peut être utilisé comme un macro processeur, mais il est beaucoup plus général que cpp ou m4 car il n'impose aucune syntaxe particulière pour ce à quoi ressemble un appel de macro.