Gema to narzędzie do przetwarzania tekstu ogólnego przeznaczenia oparte na koncepcji dopasowania wzorca.Zasadniczo odczytuje plik wejściowy i kopiuje go do pliku wyjściowego, wykonując określone transformacje danych zgodnie z zestawem wzorców zdefiniowanych przez użytkownika.Można go używać do robienia rzeczy, które są wykonywane przez narzędzia uniksowe, takie jak cpp, grep, sed, awk lub łańcuchy.Może być używany jako makroprocesor, ale jest znacznie bardziej ogólny niż cpp lub m4, ponieważ nie narzuca żadnej szczególnej składni na to, jak wygląda wywołanie makra.