Gema é um utilitário de processamento de texto de propósito geral com base no conceito de correspondência padrão. Em geral, ele lê um arquivo de entrada e o copia para um arquivo de saída, ao executar certas transformações para os dados, conforme especificado por um conjunto de padrões definidos pelo usuário. Ele pode ser usado para fazer o tipo de coisas que são feitas por utilitários Unix, como cpp, grep, sed, awk ou strings. Ele pode ser usado como um processador macro, mas é muito mais geral do que cpp ou m4 porque não impõe qualquer sintaxe particular para o que uma chamada macro parece.