awk ist eine Programmiersprache zur Bearbeitung und Auswertung beliebiger Textdaten, u. a. auch CSV-Dateien. Der zugehörige Interpreter ist eher als Compiler zu betrachten, weil der Programmtext zuerst komplett kompiliert und dann ausgeführt wird. awk wurde primär als Reportgenerator konzipiert und erschien in der Version 7[1] von Unix. Man kann awk als Weiterentwicklung oder Ergänzung des Streameditors sed betrachten, sie teilen gewisse syntaktische Elemente wie etwa reguläre Ausdrücke. Im Unterschied zu sed stehen in awk aber C-ähnliche Strukturen (if .. then .. else, verschiedene Schleifen, C-Formate …) zur Verfügung, die einen wesentlich leichteren Programmaufbau erlauben. In der Minimalanwendung wird awk in Shell-Skripten eingesetzt, um als Filter zum Beispiel Dateinamen zusammenzusetzen. Mit ausführlicheren Programmen gelingt es, Textdateien zu bearbeiten, umzuformen oder auszuwerten. Dazu stehen neben den üblichen Stringfunktionen aber auch mathematische Grund-Funktionen zur Verfügung. Der Name "awk" ist aus den Anfangsbuchstaben der Nachnamen ihrer drei Autoren Alfred V. Aho, Peter J. Weinberger und Brian W. Kernighan zusammengesetzt.
Eine Version von awk ist heute in fast jedem unixähnlichen System zu finden und oft bereits vorinstalliert. Ein vergleichbares Programm ist aber auch für fast alle anderen Betriebssysteme verfügbar.
Die Sprache arbeitet fast ausschließlich mit dem Datentyp Zeichenkette (englisch string). Daneben sind assoziative Arrays (d. h. mit Zeichenketten indizierte Arrays, auch Hashes genannt) und reguläre Ausdrücke grundlegende Bestandteile der Sprache.
Die Leistungsfähigkeit, Kompaktheit, aber auch die Beschränkungen der awk- und sed-Skripte regten Larry Wall zur Entwicklung der Sprache Perl an.