Gema är ett generellt verktyg för textbearbetning baserat på begreppet mönstermatchning.I allmänhet läser den en inmatningsfil och kopierar den till en utdatafil, medan den utför vissa transformationer till data som specificeras av en uppsättning mönster som definierats av användaren.Det kan användas för att göra olika saker som görs av Unix-verktyg som cpp, grep, sed, awk eller strängar.Det kan användas som en makroprocessor, men det är mycket mer generellt än cpp eller m4 eftersom det inte innebär någon speciell syntax för hur ett makroanrop ser ut.